mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-08-17 09:49:59 +03:00
Compare commits
459 Commits
Author | SHA1 | Date | |
---|---|---|---|
c4f6e80671 | |||
a640328f8c | |||
2c60f4f0f2 | |||
6c02fa7bd9 | |||
fac3f4cd54 | |||
e1d715ef7d | |||
67b2d5e0bf | |||
756be09d23 | |||
a2a30038cf | |||
47e7a258db | |||
b22d935dbe | |||
f2ad7824aa | |||
61a70716cd | |||
fb01a107c5 | |||
d513acdd54 | |||
847a7c7c2e | |||
f98be4d35c | |||
07ce4d2a90 | |||
cd6a9334b6 | |||
2db2c5a186 | |||
03d338608d | |||
b9a8bef477 | |||
ecc5c82985 | |||
fcd4e26943 | |||
7ec20935bd | |||
78811ae572 | |||
7887e00355 | |||
0e9ae444bd | |||
c42c1b8a5e | |||
ec31cd76c9 | |||
1e060bf2d7 | |||
cbe63e529d | |||
755915ea4b | |||
5c8d3d3bca | |||
e52d608ddf | |||
6ab16aaf63 | |||
3e14a8dc80 | |||
f5dd3bcde9 | |||
44646747a7 | |||
aa67241bde | |||
d4c032d0b7 | |||
6e7ab46106 | |||
d7ed2c18e1 | |||
3fa4a82e6f | |||
110abb0343 | |||
cebd575cd5 | |||
22d990f138 | |||
e45b13d248 | |||
db4137ba02 | |||
100cae7359 | |||
f238709304 | |||
32456779a1 | |||
8d4ed2ad3d | |||
c5a305584f | |||
56ad465675 | |||
aec22258ef | |||
1aec7d8606 | |||
5965de2f4d | |||
30506b9216 | |||
4ae51ca54e | |||
6fcac926fb | |||
657326cfe3 | |||
f54de34ba4 | |||
ee8a06f833 | |||
1128cc939d | |||
f125d3265a | |||
ca8a932c87 | |||
f7d5b4d613 | |||
aecae56071 | |||
130634dd7c | |||
1fcaae34e1 | |||
94f0c4abd9 | |||
1ad59dd152 | |||
bc8bcdcb24 | |||
577ab7bae0 | |||
089ef25a85 | |||
9323717b47 | |||
a7848c4502 | |||
e2cd26ee70 | |||
6f91c5b5ea | |||
46b80ce25e | |||
166c03f31b | |||
3ef2e05c4d | |||
1469bcf6c5 | |||
767c5bbe01 | |||
f2a46c848c | |||
25b20b7103 | |||
198bd0516a | |||
f4d881649a | |||
d5df676938 | |||
ad866fd196 | |||
3e8cb46076 | |||
46e76e8b2b | |||
03d28d7355 | |||
1f8988b580 | |||
902aaabb11 | |||
6b50bbea00 | |||
0cf672fa91 | |||
c8376c91f6 | |||
28c3243e77 | |||
3ced80b54a | |||
96f0ee85d2 | |||
91c7bf659b | |||
191053b53d | |||
02d9cef356 | |||
e1424a97a9 | |||
2a6825c393 | |||
182a80b922 | |||
34d22c1ed5 | |||
77a1f418c8 | |||
8ed3088441 | |||
0fa4d62986 | |||
f4592a8df5 | |||
3468628a22 | |||
1e813ceb3e | |||
20f1f714ba | |||
f435a3002b | |||
5cb74dadaf | |||
d9b4538469 | |||
1f5e292520 | |||
45aec0eae4 | |||
625f1745dd | |||
e4ac19a87a | |||
cff257f584 | |||
2e6bad311d | |||
da482fe1dd | |||
32ad6aefca | |||
85d15b5143 | |||
d823a05aef | |||
8eacfd4cc2 | |||
4ff6091294 | |||
6aa576cda7 | |||
6dfc042c21 | |||
b8ee9810b0 | |||
b6e747ec5a | |||
2d6adabd53 | |||
fea5a0bdc9 | |||
575b18c0f0 | |||
6a035507fd | |||
721d3f06c9 | |||
24121aa9da | |||
28b8cc31f6 | |||
077cd91773 | |||
f340964dc9 | |||
46acb0f2b7 | |||
d288703d57 | |||
eda3af2488 | |||
05b9b8fda3 | |||
9dc3b99345 | |||
f68c91faa6 | |||
0de63c6745 | |||
b35f0131e6 | |||
eb42e0ab5c | |||
6acc17af8c | |||
3697a0cef6 | |||
cc76cf31d7 | |||
1dac1b3726 | |||
776f527926 | |||
bf878aa97e | |||
8fd7eee90e | |||
83af050800 | |||
544cd63062 | |||
3badeffb05 | |||
8e06c8b3da | |||
777fc2e9d6 | |||
ce1783ccc1 | |||
40d46934d0 | |||
1aa1683377 | |||
2e7c8b0b6f | |||
da8b7c9f89 | |||
14194f1d56 | |||
690b4ad329 | |||
3ec80d0112 | |||
2b1f67d418 | |||
e8ad339312 | |||
78675b228b | |||
60ff07585c | |||
457e050628 | |||
12edef9a6a | |||
4dbecff9fb | |||
4954e079c8 | |||
0b973381dc | |||
331e1fcbee | |||
097c818bf0 | |||
cb51aa48a7 | |||
e403f8d43e | |||
2d6a581960 | |||
444647d1e3 | |||
c106c8a18c | |||
6318808270 | |||
ebea341856 | |||
4035152a87 | |||
64a6682b93 | |||
d4528d9ac2 | |||
0c5b7b93a3 | |||
7636ef4630 | |||
19bac57b26 | |||
43b3851975 | |||
48de890392 | |||
09cbae6297 | |||
82bdf6d5ae | |||
701477e8c3 | |||
9be5773fbb | |||
b216dd41d7 | |||
7b0075a242 | |||
d1ec4d7a5a | |||
3c7a12b416 | |||
cbcf5ba7d4 | |||
f5a8f969dd | |||
f9bfa10797 | |||
c42b397845 | |||
f2144a3063 | |||
47919e46ab | |||
7534be6fbc | |||
63fbcc6927 | |||
e542d52a7c | |||
9147bf2a73 | |||
22a1ec68d5 | |||
a9e96b1ee0 | |||
5f48643e0a | |||
a7c76142a0 | |||
22a5ebe44b | |||
8b54ef4147 | |||
a480572244 | |||
388f3368cb | |||
53d9a92497 | |||
87f3d69dac | |||
acec6c3d02 | |||
3879b33447 | |||
a11010c07d | |||
8ddfb40e2d | |||
3e64748c72 | |||
3f11d7820a | |||
64bf389bca | |||
a3a623dd57 | |||
16928a161b | |||
939cc47431 | |||
10a4e969a6 | |||
8feb499ba2 | |||
bf69fd9b22 | |||
7a4769bbdb | |||
1fdb582a09 | |||
067c00f533 | |||
1a94521770 | |||
08cb0b3cfc | |||
180ca598c4 | |||
f24d4671d4 | |||
e1ec2a1ea6 | |||
5705a7e066 | |||
e170af3ac0 | |||
88e3e8be7c | |||
5d3e02aaa2 | |||
84e96866ac | |||
651153216b | |||
a49cf8a57d | |||
f4e7157716 | |||
9a152d481b | |||
df3de82c06 | |||
8db5f642e9 | |||
16208bca89 | |||
3f3ec73d39 | |||
c9bece0c8f | |||
eb78ccf391 | |||
d3209478d5 | |||
13e5668a84 | |||
8fa592e3dc | |||
e195b43932 | |||
664085ab74 | |||
abe3ee9cc5 | |||
a8e34e298e | |||
181c80d6eb | |||
56d672afeb | |||
b9ebee4939 | |||
c3c4bd4e75 | |||
adefc3955b | |||
09a40ab471 | |||
70a339970c | |||
f69b841d2b | |||
4f377369a8 | |||
86823575fd | |||
69a0f3ee23 | |||
6a9948c018 | |||
e3f0cae719 | |||
7311161340 | |||
b55501c00c | |||
5c153e200f | |||
232514041d | |||
dd6cd7dd63 | |||
f055724b27 | |||
c4a04dc024 | |||
85453c4247 | |||
1daaebfa0c | |||
7d9576edcb | |||
9de2972c30 | |||
be44cabd7f | |||
32db8dd75b | |||
a3f33b6531 | |||
707302b2cf | |||
0f15d0344d | |||
c14c6b083e | |||
be291b330a | |||
38fd207e53 | |||
d412487eb7 | |||
7803e6f3ed | |||
84255632cb | |||
b557a36890 | |||
e4e50f52e8 | |||
e74d6c5009 | |||
5388607f3d | |||
115c02e871 | |||
b4ad955d9e | |||
3b4a542c06 | |||
13f3d40cbf | |||
3c2051f86a | |||
2348cf20e7 | |||
484640eaf6 | |||
41e097e91a | |||
1112330e46 | |||
a2e2717411 | |||
a7a82f9889 | |||
521ac51748 | |||
1466051d12 | |||
e2aeee6811 | |||
f4c3acdf35 | |||
e88d638ac6 | |||
55bc5090b9 | |||
38f6f47be9 | |||
946c489c68 | |||
de1ecd5302 | |||
165ed4a00e | |||
ed5a25841f | |||
be18d3a732 | |||
6c5d4e7cf4 | |||
5320ce02d8 | |||
9b5655a89e | |||
899ae0d2b5 | |||
7922e247f1 | |||
647247740f | |||
335f6bc251 | |||
e4c48e02b4 | |||
6ec87af68e | |||
20448818c4 | |||
528d37bdfe | |||
fb1b7d8ed0 | |||
d26d18a1a6 | |||
2cc33bfe20 | |||
c2709cdaaa | |||
4e21a95afe | |||
ffec099e75 | |||
d06f261cb1 | |||
35153940e3 | |||
423af1977f | |||
30605477f2 | |||
36c820e6c8 | |||
c23dae4e5c | |||
948897687e | |||
63e67ee013 | |||
ce2e300a4f | |||
0165410712 | |||
aa98871c77 | |||
1499e1d5f4 | |||
683241de5a | |||
6c3f7d7fd6 | |||
44948f5b69 | |||
e1506cb4eb | |||
909d647aab | |||
da4f146f83 | |||
3edbc2c4a9 | |||
d6fa6f3e92 | |||
846f694908 | |||
9734c81f3a | |||
6eeca586d4 | |||
b2fd033cd5 | |||
7641c3c782 | |||
4567905790 | |||
86941f55d5 | |||
6b56ac24df | |||
632ed550c7 | |||
3b5417687d | |||
fd06fd1442 | |||
f23814e0cd | |||
7471357081 | |||
a256fccfe1 | |||
16e4833492 | |||
6d7d465a04 | |||
1b16bf4ec7 | |||
045176bf35 | |||
a500d73ac0 | |||
bd70595c9d | |||
12a6278135 | |||
a3711708f7 | |||
8f84fef2eb | |||
0714b2ba4c | |||
d4ad29be2a | |||
043c954e9f | |||
d3c236f91c | |||
5dd21f2a75 | |||
d65707a5b4 | |||
9c9ed0f3f6 | |||
7a61c13834 | |||
27944fac9c | |||
caaa1b8f13 | |||
47cab73499 | |||
af4dad0fa2 | |||
c40e14b4be | |||
aa23d432cd | |||
852fa7d04a | |||
081c6330b1 | |||
a147ef3837 | |||
e1abc44814 | |||
c4951f11b7 | |||
08a2e796e8 | |||
07613d2020 | |||
4a7acedd3c | |||
1795bfe4a1 | |||
326ecb7814 | |||
2d1f2e706c | |||
bf5343d233 | |||
89c5ce4dcd | |||
788c315165 | |||
19e57fd902 | |||
2f5fb5e09d | |||
8c9b8431ee | |||
845659340e | |||
a90629aa13 | |||
f19fdbba22 | |||
ad664f54ff | |||
fe7cb869a8 | |||
f272378d52 | |||
e335b2ca90 | |||
13709bdbf8 | |||
62455ed872 | |||
05d377bdd2 | |||
1f4ec305f0 | |||
8a52daa2d4 | |||
72978b9789 | |||
bcf2aed1a9 | |||
75618aaf88 | |||
59254c9beb | |||
2d9bf021a1 | |||
27b175b9a2 | |||
bf773e0467 | |||
fb98f4b10d | |||
7bb22f58b8 | |||
360194bfb5 | |||
c120fcc06a | |||
96c807feb8 | |||
b731d7830e | |||
aef9746874 | |||
568583adf7 | |||
561e60732f | |||
ad6d5acb42 | |||
6b4d18c7b3 | |||
c6cd55d38e | |||
2562303a45 | |||
b0e48bfdfe | |||
f093e7ad6b | |||
813a2f683d | |||
9fc567db7b |
34
.cvsignore
34
.cvsignore
@ -1,34 +0,0 @@
|
||||
*.a
|
||||
*.o
|
||||
*~
|
||||
.git
|
||||
ABOUT-NLS
|
||||
COPYING
|
||||
INSTALL
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
config.cache
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.rpath
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
coverage
|
||||
libtool
|
||||
libvirt-*.tar.gz
|
||||
libvirt.pc
|
||||
libvirt.spec
|
||||
ltconfig
|
||||
ltmain.sh
|
||||
mingw32-libvirt.spec
|
||||
mkinstalldirs
|
||||
results.log
|
||||
stamp-h
|
||||
stamp-h.in
|
||||
stamp-h1
|
||||
update.log
|
10
.gitignore
vendored
10
.gitignore
vendored
@ -2,6 +2,7 @@
|
||||
*.o
|
||||
*~
|
||||
.git
|
||||
.git-module-status
|
||||
ABOUT-NLS
|
||||
COPYING
|
||||
INSTALL
|
||||
@ -34,3 +35,12 @@ stamp-h
|
||||
stamp-h.in
|
||||
stamp-h1
|
||||
update.log
|
||||
tests/*.log
|
||||
/GNUmakefile
|
||||
/maint.mk
|
||||
gnulib/
|
||||
*.orig
|
||||
*.rej
|
||||
*#*#
|
||||
*.#*#
|
||||
ChangeLog
|
||||
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "gnulib"]
|
||||
path = .gnulib
|
||||
url = git://git.sv.gnu.org/gnulib.git
|
1
.gnulib
Submodule
1
.gnulib
Submodule
Submodule .gnulib added at 28db629d4f
@ -1,5 +1 @@
|
||||
^gnulib/lib/getaddrinfo\.c$
|
||||
^gnulib/lib/printf-parse\.c$
|
||||
^gnulib/lib/vasnprintf\.c$
|
||||
^build-aux/useless-if-before-free$
|
||||
^ChangeLog$
|
||||
^ChangeLog
|
||||
|
@ -4,5 +4,5 @@ docs/html/libvirt-virterror.html
|
||||
docs/libvirt-api.xml
|
||||
docs/libvirt-refs.xml
|
||||
include/libvirt/virterror.h
|
||||
qemud/remote.c
|
||||
qemud/dispatch.c
|
||||
src/virterror.c
|
||||
|
1
.x-sc_prohibit_strcmp_and_strncmp
Normal file
1
.x-sc_prohibit_strcmp_and_strncmp
Normal file
@ -0,0 +1 @@
|
||||
^gnulib/
|
3
AUTHORS
3
AUTHORS
@ -77,6 +77,9 @@ Patches have also been contributed by:
|
||||
Amy Griffis <amy.griffis@hp.com>
|
||||
Henrik Persson E <henrik.e.persson@ericsson.com>
|
||||
Satoru SATOH <satoru.satoh@gmail.com>
|
||||
Paolo Bonzini <pbonzini@redhat.com>
|
||||
Matthias Bolte <matthias.bolte@googlemail.com>
|
||||
Miloslav Trmač <mitr@redhat.com>
|
||||
|
||||
[....send patches to get your name here....]
|
||||
|
||||
|
@ -506,5 +506,3 @@ if necessary. Here is a sample; alter the names:
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
Mon Jul 6 14:26:02 CEST 2009 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* docs/downloads.html docs/downloads.html.in: update download
|
||||
informations after switch to git
|
||||
|
||||
Fri Jul 3 16:21:48 CEST 2009 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* configure.in libvirt.spec.in NEWS docs/* po/*: release of
|
||||
@ -1202,7 +1207,7 @@ Fri Apr 24 13:17:47 BST 2009 Daniel P. Berrange <berrange@redhat.com>
|
||||
Fix network config in XM driver
|
||||
* src/xm_internal.c: Fix setting of bridge & script parameters
|
||||
in VIF config
|
||||
* src/xend_internal.h, src/xend_internal.c: Export the
|
||||
* src/xend_internal.h, src/xend_internal.c: Export the
|
||||
default bridge script name to XM driver
|
||||
* tests/xmconfigdata/*: Update to take account of script=
|
||||
setting in VIF config
|
60
GNUmakefile
60
GNUmakefile
@ -1,60 +0,0 @@
|
||||
# Having a separate GNUmakefile lets me `include' the dynamically
|
||||
# generated rules created via Makefile.maint as well as Makefile.maint itself.
|
||||
# This makefile is used only if you run GNU Make.
|
||||
# It is necessary if you want to build targets usually of interest
|
||||
# only to the maintainer.
|
||||
|
||||
# Copyright (C) 2001, 2003, 2006-2008 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
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program 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 General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Systems where /bin/sh is not the default shell need this. The $(shell)
|
||||
# command below won't work with e.g. stock DOS/Windows shells.
|
||||
ifeq ($(wildcard /bin/s[h]),/bin/sh)
|
||||
SHELL = /bin/sh
|
||||
else
|
||||
# will be used only with the next shell-test line, then overwritten
|
||||
# by a configured-in value
|
||||
SHELL = sh
|
||||
endif
|
||||
|
||||
_have-Makefile := $(shell test -f Makefile && echo yes)
|
||||
|
||||
# If the user runs GNU make but has not yet run ./configure,
|
||||
# give them a diagnostic.
|
||||
ifeq ($(_have-Makefile),yes)
|
||||
|
||||
# Make tar archive easier to reproduce.
|
||||
export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
|
||||
|
||||
include Makefile
|
||||
|
||||
include $(srcdir)/Makefile.cfg
|
||||
include $(srcdir)/Makefile.maint
|
||||
|
||||
else
|
||||
|
||||
all:
|
||||
@echo There seems to be no Makefile in this directory. 1>&2
|
||||
@echo "You must run ./configure before running \`make'." 1>&2
|
||||
@exit 1
|
||||
|
||||
check dist distcheck install: all
|
||||
|
||||
endif
|
||||
|
||||
# Tell version 3.79 and up of GNU make to not build goals in this
|
||||
# directory in parallel. This is necessary in case someone tries to
|
||||
# build multiple targets on one command line.
|
||||
.NOTPARALLEL:
|
2
HACKING
2
HACKING
@ -312,7 +312,7 @@ gcc's printf attribute directive in the prototype. For example, here's
|
||||
the one for virAsprintf, in util.h:
|
||||
|
||||
int virAsprintf(char **strp, const char *fmt, ...)
|
||||
ATTRIBUTE_FORMAT(printf, 2, 3);
|
||||
ATTRIBUTE_FMT_PRINTF(2, 3);
|
||||
|
||||
This makes it so gcc's -Wformat and -Wformat-security options can do
|
||||
their jobs and cross-check format strings with the number and types
|
||||
|
21
Makefile.am
21
Makefile.am
@ -9,6 +9,7 @@ SUBDIRS = gnulib/lib include src qemud tools proxy docs gnulib/tests \
|
||||
ACLOCAL_AMFLAGS = -I m4 -I gnulib/m4
|
||||
|
||||
EXTRA_DIST = \
|
||||
ChangeLog-old \
|
||||
libvirt.spec libvirt.spec.in \
|
||||
mingw32-libvirt.spec.in \
|
||||
libvirt.pc libvirt.pc.in \
|
||||
@ -16,11 +17,11 @@ EXTRA_DIST = \
|
||||
.x-sc_avoid_if_before_free \
|
||||
.x-sc_require_config_h_first \
|
||||
.x-sc_prohibit_strcmp \
|
||||
.x-sc_prohibit_strcmp_and_strncmp \
|
||||
.x-sc_require_config_h \
|
||||
.x-sc_prohibit_nonreentrant \
|
||||
Makefile.nonreentrant \
|
||||
autogen.sh \
|
||||
mylibtool
|
||||
autogen.sh
|
||||
|
||||
man_MANS = virsh.1
|
||||
|
||||
@ -47,5 +48,21 @@ cov: clean-cov
|
||||
clean-cov:
|
||||
rm -rf $(top_builddir)/coverage
|
||||
|
||||
MAINTAINERCLEANFILES = .git-module-status
|
||||
|
||||
# disable this check
|
||||
distuninstallcheck:
|
||||
|
||||
dist-hook: gen-ChangeLog
|
||||
|
||||
# Generate the ChangeLog file (with all entries since the switch to git)
|
||||
# and insert it into the directory we're about to use to create a tarball.
|
||||
gen_start_date = 2009-07-04
|
||||
.PHONY: gen-ChangeLog
|
||||
gen-ChangeLog:
|
||||
if test -d .git; then \
|
||||
$(top_srcdir)/build-aux/gitlog-to-changelog \
|
||||
--since=$(gen_start_date) > $(distdir)/cl-t; \
|
||||
rm -f $(distdir)/ChangeLog; \
|
||||
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
|
||||
fi
|
||||
|
62
Makefile.cfg
62
Makefile.cfg
@ -1,62 +0,0 @@
|
||||
# Customize Makefile.maint. -*- makefile -*-
|
||||
# Copyright (C) 2003-2009 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
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program 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 General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Use alpha.gnu.org for alpha and beta releases.
|
||||
# Use ftp.gnu.org for major releases.
|
||||
gnu_ftp_host-alpha = alpha.gnu.org
|
||||
gnu_ftp_host-beta = alpha.gnu.org
|
||||
gnu_ftp_host-major = ftp.gnu.org
|
||||
gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
|
||||
|
||||
url_dir_list = \
|
||||
ftp://$(gnu_rel_host)/gnu/coreutils
|
||||
|
||||
# Tests not to run as part of "make distcheck".
|
||||
local-checks-to-skip = \
|
||||
changelog-check \
|
||||
check-AUTHORS \
|
||||
makefile-check \
|
||||
makefile_path_separator_check \
|
||||
patch-check \
|
||||
sc_GPL_version \
|
||||
sc_always_defined_macros \
|
||||
sc_cast_of_alloca_return_value \
|
||||
sc_dd_max_sym_length \
|
||||
sc_error_exit_success \
|
||||
sc_file_system \
|
||||
sc_immutable_NEWS \
|
||||
sc_makefile_path_separator_check \
|
||||
sc_obsolete_symbols \
|
||||
sc_prohibit_S_IS_definition \
|
||||
sc_prohibit_atoi_atof \
|
||||
sc_prohibit_jm_in_m4 \
|
||||
sc_prohibit_quote_without_use \
|
||||
sc_prohibit_quotearg_without_use \
|
||||
sc_prohibit_stat_st_blocks \
|
||||
sc_root_tests \
|
||||
sc_space_tab \
|
||||
sc_sun_os_names \
|
||||
sc_system_h_headers \
|
||||
sc_tight_scope \
|
||||
sc_two_space_separator_in_usage \
|
||||
sc_useless_cpp_parens
|
||||
|
||||
useless_free_options = \
|
||||
--name=sexpr_free \
|
||||
--name=VIR_FREE \
|
||||
--name=xmlFree \
|
||||
--name=xmlXPathFreeContext \
|
||||
--name=xmlXPathFreeObject
|
828
Makefile.maint
828
Makefile.maint
@ -1,828 +0,0 @@
|
||||
# This is reported not to work with make-3.79.1
|
||||
# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
|
||||
ME := Makefile.maint
|
||||
|
||||
# Do not save the original name or timestamp in the .tar.gz file.
|
||||
# Use --rsyncable if available.
|
||||
gzip_rsyncable := \
|
||||
$(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
|
||||
GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
|
||||
|
||||
VC_LIST = $(srcdir)/build-aux/vc-list-files
|
||||
|
||||
VC_LIST_EXCEPT = \
|
||||
$(VC_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi
|
||||
|
||||
include Makefile.nonreentrant
|
||||
|
||||
# Prevent programs like 'sort' from considering distinct strings to be equal.
|
||||
# Doing it here saves us from having to set LC_ALL elsewhere in this file.
|
||||
export LC_ALL = C
|
||||
|
||||
# Collect the names of rules starting with `sc_'.
|
||||
syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
|
||||
$(srcdir)/$(ME))
|
||||
.PHONY: $(syntax-check-rules)
|
||||
|
||||
local-checks-available = \
|
||||
patch-check $(syntax-check-rules) \
|
||||
makefile-check check-AUTHORS
|
||||
.PHONY: $(local-checks-available)
|
||||
|
||||
# Arrange to print the name of each syntax-checking rule just before running it.
|
||||
$(syntax-check-rules): %: %.m
|
||||
$(patsubst %, %.m, $(syntax-check-rules)):
|
||||
@echo "CHECK:" $(patsubst sc_%.m, %, $@)
|
||||
|
||||
local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available))
|
||||
|
||||
syntax-check: $(local-check)
|
||||
# @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \
|
||||
# $$(find -type f -name '*.[chly]') && \
|
||||
# { echo '$(ME): found conditional include' 1>&2; \
|
||||
# exit 1; } || :
|
||||
|
||||
# grep -nE '^# *include <(string|stdlib)\.h>' \
|
||||
# $(srcdir)/{lib,src}/*.[chy] && \
|
||||
# { echo '$(ME): FIXME' 1>&2; \
|
||||
# exit 1; } || :
|
||||
# FIXME: don't allow `#include .strings\.h' anywhere
|
||||
|
||||
# By default, _prohibit_regexp does not ignore case.
|
||||
export ignore_case =
|
||||
_ignore_case = $$(test -n "$$ignore_case" && echo -i || :)
|
||||
|
||||
# There are many rules below that prohibit constructs in this package.
|
||||
# If the offending construct can be matched with a grep-E-style regexp,
|
||||
# use this macro. The shell variables "re" and "msg" must be defined.
|
||||
define _prohibit_regexp
|
||||
dummy=; : so we do not need a semicolon before each use \
|
||||
test "x$$re" != x || { echo '$(ME): re not defined' 1>&2; exit 1; }; \
|
||||
test "x$$msg" != x || { echo '$(ME): msg not defined' 1>&2; exit 1; };\
|
||||
grep $(_ignore_case) -nE "$$re" $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): '"$$msg" 1>&2; exit 1; } || :
|
||||
endef
|
||||
|
||||
sc_avoid_if_before_free:
|
||||
@$(srcdir)/build-aux/useless-if-before-free \
|
||||
$(useless_free_options) \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found useless "if" before "free" above' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Avoid uses of write(2). Either switch to streams (fwrite), or use
|
||||
# the safewrite wrapper.
|
||||
sc_avoid_write:
|
||||
@if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
grep '\<write *(' $$($(VC_LIST_EXCEPT) | grep '\.c$$') && \
|
||||
{ echo "$(ME): the above files use write;" \
|
||||
" consider using the safewrite wrapper instead" \
|
||||
1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
|
||||
sc_cast_of_argument_to_free:
|
||||
@re='\<free *\( *\(' msg='don'\''t cast free argument' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_cast_of_x_alloc_return_value:
|
||||
@re='\*\) *x(m|c|re)alloc\>' \
|
||||
msg='don'\''t cast x*alloc return value' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_cast_of_alloca_return_value:
|
||||
@re='\*\) *alloca\>' msg='don'\''t cast alloca return value' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_space_tab:
|
||||
@re='[ ] ' msg='found SPACE-TAB sequence; remove the SPACE' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Don't use *scanf or the old ato* functions in `real' code.
|
||||
# They provide no error checking mechanism.
|
||||
# Instead, use strto* functions.
|
||||
sc_prohibit_atoi_atof:
|
||||
@re='\<([fs]?scanf|ato([filq]|ll))\>' \
|
||||
msg='do not use *scan''f, ato''f, ato''i, ato''l, ato''ll or ato''q' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Use STREQ rather than comparing strcmp == 0, or != 0.
|
||||
# Similarly, use STREQLEN or STRPREFIX rather than strncmp.
|
||||
sc_prohibit_strcmp:
|
||||
@grep -nE '! *strn?cmp *\(|\<strn?cmp *\([^)]+\) *==' \
|
||||
$$($(VC_LIST_EXCEPT)) \
|
||||
| grep -vE ':# *define STREQ(LEN)?\(' && \
|
||||
{ echo '$(ME): use STREQ(LEN) in place of the above uses of strcmp(strncmp)' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Use virAsprintf rather than a'sprintf since *strp is undefined on error.
|
||||
sc_prohibit_asprintf:
|
||||
@re='\<[a]sprintf\>' \
|
||||
msg='use virAsprintf, not a'sprintf \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_prohibit_VIR_ERR_NO_MEMORY:
|
||||
@re='\<V''IR_ERR_NO_MEMORY\>' \
|
||||
msg='use virReportOOMError, not V'IR_ERR_NO_MEMORY \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_prohibit_nonreentrant:
|
||||
@fail=0 ; \
|
||||
for i in $(NON_REENTRANT) ; \
|
||||
do \
|
||||
grep --before 2 --after 1 -nE "\<$$i\>[:space:]*\(" $$($(VC_LIST_EXCEPT)) && \
|
||||
fail=1 && echo "$(ME): use $${i}_r, not $${i}" || : ; \
|
||||
done ; \
|
||||
exit $$fail
|
||||
|
||||
# Using EXIT_SUCCESS as the first argument to error is misleading,
|
||||
# since when that parameter is 0, error does not exit. Use `0' instead.
|
||||
sc_error_exit_success:
|
||||
@grep -nF 'error (EXIT_SUCCESS,' \
|
||||
$$(find -type f -name '*.[chly]') && \
|
||||
{ echo '$(ME): found error (EXIT_SUCCESS' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_file_system:
|
||||
@re=file''system ignore_case=1 \
|
||||
msg='found use of "file''system"; spell it "file system"' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Don't use cpp tests of this symbol. All code assumes config.h is included.
|
||||
sc_prohibit_have_config_h:
|
||||
@grep -n '^# *if.*HAVE''_CONFIG_H' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found use of HAVE''_CONFIG_H; remove' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Nearly all .c files must include <config.h>.
|
||||
sc_require_config_h:
|
||||
@if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
grep -L '^# *include <config\.h>' \
|
||||
$$($(VC_LIST_EXCEPT) | grep '\.c$$') \
|
||||
| grep . && \
|
||||
{ echo '$(ME): the above files do not include <config.h>' \
|
||||
1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
|
||||
# You must include <config.h> before including any other header file.
|
||||
sc_require_config_h_first:
|
||||
@if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
fail=0; \
|
||||
for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do \
|
||||
grep '^# *include\>' $$i | sed 1q \
|
||||
| grep '^# *include <config\.h>' > /dev/null \
|
||||
|| { echo $$i; fail=1; }; \
|
||||
done; \
|
||||
test $$fail = 1 && \
|
||||
{ echo '$(ME): the above files include some other header' \
|
||||
'before <config.h>' 1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
|
||||
sc_prohibit_HAVE_MBRTOWC:
|
||||
@re='\bHAVE_MBRTOWC\b' msg="do not use $$re; it is always defined" \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# To use this "command" macro, you must first define two shell variables:
|
||||
# h: the header, enclosed in <> or ""
|
||||
# re: a regular expression that matches IFF something provided by $h is used.
|
||||
define _header_without_use
|
||||
h_esc=`echo "$$h"|sed 's/\./\\./'`; \
|
||||
if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
files=$$(grep -l '^# *include '"$$h_esc" \
|
||||
$$($(VC_LIST_EXCEPT) | grep '\.c$$')) && \
|
||||
grep -LE "$$re" $$files | grep . && \
|
||||
{ echo "$(ME): the above files include $$h but don't use it" \
|
||||
1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
endef
|
||||
|
||||
# Prohibit the inclusion of assert.h without an actual use of assert.
|
||||
sc_prohibit_assert_without_use:
|
||||
@h='<assert.h>' re='\<assert *\(' $(_header_without_use)
|
||||
|
||||
# Prohibit the inclusion of getopt.h without an actual use.
|
||||
sc_prohibit_getopt_without_use:
|
||||
@h='<getopt.h>' re='\<getopt(_long)? *\(' $(_header_without_use)
|
||||
|
||||
# Don't include quotearg.h unless you use one of its functions.
|
||||
sc_prohibit_quotearg_without_use:
|
||||
@h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_header_without_use)
|
||||
|
||||
# Don't include quote.h unless you use one of its functions.
|
||||
sc_prohibit_quote_without_use:
|
||||
@h='"quote.h"' re='\<quote(_n)? *\(' $(_header_without_use)
|
||||
|
||||
# Don't include this header unless you use one of its functions.
|
||||
sc_prohibit_long_options_without_use:
|
||||
@h='"long-options.h"' re='\<parse_long_options *\(' \
|
||||
$(_header_without_use)
|
||||
|
||||
# Don't include this header unless you use one of its functions.
|
||||
sc_prohibit_inttostr_without_use:
|
||||
@h='"inttostr.h"' re='\<(off|[iu]max|uint)tostr *\(' \
|
||||
$(_header_without_use)
|
||||
|
||||
# Don't include this header unless you use one of its functions.
|
||||
sc_prohibit_error_without_use:
|
||||
@h='"error.h"' \
|
||||
re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? *\('\
|
||||
$(_header_without_use)
|
||||
|
||||
sc_prohibit_safe_read_without_use:
|
||||
@h='"safe-read.h"' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
|
||||
$(_header_without_use)
|
||||
|
||||
sc_prohibit_argmatch_without_use:
|
||||
@h='"argmatch.h"' \
|
||||
re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<argmatch(_exit_fn|_(in)?valid) *\()' \
|
||||
$(_header_without_use)
|
||||
|
||||
sc_prohibit_root_dev_ino_without_use:
|
||||
@h='"root-dev-ino.h"' \
|
||||
re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \
|
||||
$(_header_without_use)
|
||||
|
||||
# Prohibit the inclusion of c-ctype.h without an actual use.
|
||||
sc_prohibit_c_ctype_without_use:
|
||||
@h='[<"]c-ctype.h[">]' re='\<c_($(ctype_re)) *\(' $(_header_without_use)
|
||||
|
||||
# Prohibit the inclusion of <ctype.h>.
|
||||
sc_prohibit_ctype_h:
|
||||
@grep -E '^# *include *<ctype\.h>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo "$(ME): don't use ctype.h; instead, use c-ctype.h" \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
sc_obsolete_symbols:
|
||||
@re='\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
|
||||
msg='do not use HAVE''_FCNTL_H or O'_NDELAY \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
|
||||
|
||||
# Each nonempty line must start with a year number, or a TAB.
|
||||
# Or day-of-week+space.
|
||||
changelog_entry_header_regexp = \
|
||||
([12][0-9][0-9][0-9]| .|(Mon|Tue|Wed|Thu|Fri|Sat|Sun) )
|
||||
sc_changelog:
|
||||
@grep -Evn '(^$$|^$(changelog_entry_header_regexp))' \
|
||||
$$(find . -maxdepth 2 -name ChangeLog) && \
|
||||
{ echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_the_the:
|
||||
@re='\<the ''the\>' \
|
||||
ignore_case=1 msg='found use of "the ''the";' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_trailing_blank:
|
||||
@re='[ ]$$' \
|
||||
ignore_case=1 msg='found trailing blank(s)' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Ensure that no C source file uses TABs for indentation.
|
||||
# Also match *.h.in files, to get libvirt.h.in.
|
||||
# Exclude files in gnulib, since they're imported.
|
||||
sc_TAB_in_indentation:
|
||||
@grep -lE '^ * ' /dev/null \
|
||||
$$($(VC_LIST_EXCEPT) \
|
||||
| grep -E '\.[ch](\.in)?$$' \
|
||||
| grep -v '^gnulib/') && \
|
||||
{ echo '$(ME): found TAB(s) used for indentation in C sources;'\
|
||||
'use spaces' 1>&2; exit 1; } || :
|
||||
|
||||
ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
|
||||
|isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
|
||||
|
||||
sc_avoid_ctype_macros:
|
||||
@grep -E '\b($(ctype_re)) *\(' /dev/null \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo "$(ME): don't use ctype macros (use c-ctype.h)" \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Match lines like the following, but where there is only one space
|
||||
# between the options and the description:
|
||||
# -D, --all-repeated[=delimit-method] print all duplicate lines\n
|
||||
longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
|
||||
sc_two_space_separator_in_usage:
|
||||
@grep -nE '^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo "$(ME): help2man requires at least two spaces between"; \
|
||||
echo "$(ME): an option and its description"; \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Many of the function names below came from this filter:
|
||||
# git grep -B2 '\<_('|grep -E '\.c- *[[:alpha:]_][[:alnum:]_]* ?\(.*[,;]$' \
|
||||
# |sed 's/.*\.c- *//'|perl -pe 's/ ?\(.*//'|sort -u \
|
||||
# |grep -vE '^(qsort|if|close|assert|fputc|free|N_|vir.*GetName|.*Unlock|virNodeListDevices|virHashRemoveEntry|freeaddrinfo|.*[fF]ree|xdrmem_create|xmlXPathFreeObject|virUUIDFormat|openvzSetProgramSentinal|polkit_action_unref)$'
|
||||
|
||||
msg_gen_function =
|
||||
msg_gen_function += DEBUG0
|
||||
msg_gen_function += DISABLE_fprintf
|
||||
msg_gen_function += ERROR
|
||||
msg_gen_function += ERROR0
|
||||
msg_gen_function += REMOTE_DEBUG
|
||||
msg_gen_function += ReportError
|
||||
msg_gen_function += VIR_FREE
|
||||
msg_gen_function += VIR_INFO
|
||||
msg_gen_function += VIR_USE_CPU
|
||||
msg_gen_function += errorf
|
||||
msg_gen_function += lxcError
|
||||
msg_gen_function += networkLog
|
||||
msg_gen_function += networkReportError
|
||||
msg_gen_function += oneError
|
||||
msg_gen_function += openvzError
|
||||
msg_gen_function += openvzLog
|
||||
msg_gen_function += qemudDispatchClientFailure
|
||||
msg_gen_function += qemudLog
|
||||
msg_gen_function += qemudReportError
|
||||
msg_gen_function += regerror
|
||||
msg_gen_function += remoteDispatchFormatError
|
||||
msg_gen_function += umlLog
|
||||
msg_gen_function += umlReportError
|
||||
msg_gen_function += virConfError
|
||||
msg_gen_function += virDomainReportError
|
||||
msg_gen_function += virSecurityReportError
|
||||
msg_gen_function += virHashError
|
||||
msg_gen_function += virLibConnError
|
||||
msg_gen_function += virLibDomainError
|
||||
msg_gen_function += virLog
|
||||
msg_gen_function += virNetworkReportError
|
||||
msg_gen_function += virNodeDeviceReportError
|
||||
msg_gen_function += virProxyError
|
||||
msg_gen_function += virRaiseError
|
||||
msg_gen_function += virReportErrorHelper
|
||||
msg_gen_function += virReportSystemError
|
||||
msg_gen_function += virSexprError
|
||||
msg_gen_function += virStorageLog
|
||||
msg_gen_function += virStorageReportError
|
||||
msg_gen_function += virXMLError
|
||||
msg_gen_function += virXenInotifyError
|
||||
msg_gen_function += virXenStoreError
|
||||
msg_gen_function += virXendError
|
||||
msg_gen_function += vshCloseLogFile
|
||||
msg_gen_function += xenUnifiedError
|
||||
msg_gen_function += xenXMError
|
||||
|
||||
# Uncomment the following and run "make syntax-check" to see diagnostics
|
||||
# that are not yet marked for translation, but that need to be rewritten
|
||||
# so that they are translatable.
|
||||
# msg_gen_function += error
|
||||
# msg_gen_function += fprintf
|
||||
# msg_gen_function += testError
|
||||
# msg_gen_function += virXenError
|
||||
# msg_gen_function += vshPrint
|
||||
# msg_gen_function += vshError
|
||||
|
||||
func_or := $(shell printf '$(msg_gen_function)'|tr -s '[[:space:]]' '|')
|
||||
func_re := ($(func_or))
|
||||
|
||||
# Look for diagnostics that aren't marked for translation.
|
||||
# This won't find any for which error's format string is on a separate line.
|
||||
# The sed filters eliminate false-positives like these:
|
||||
# _("...: "
|
||||
# "%s", _("no storage vol w..."
|
||||
sc_unmarked_diagnostics:
|
||||
@grep -nE \
|
||||
'\<$(func_re) \([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT)) \
|
||||
| grep -v '_''(' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
@{ grep -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT)); \
|
||||
grep -A1 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
|
||||
| sed 's/_("[^"][^"]*"//;s/[ ]"%s"//' \
|
||||
| grep '[ ]"' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_prohibit_virBufferAdd_with_string_literal:
|
||||
@re='\<virBufferAdd *\([^,]+, *"[^"]' \
|
||||
msg='use virBufferAddLit, not virBufferAdd, with a string literal' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Not only do they fail to deal well with ipv6, but the gethostby*
|
||||
# functions are also not thread-safe.
|
||||
sc_prohibit_gethostby:
|
||||
@re='\<gethostby(addr|name2?) *\(' \
|
||||
msg='use getaddrinfo, not gethostby*' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Avoid useless parentheses like those in this example:
|
||||
# #if defined (SYMBOL) || defined (SYM2)
|
||||
sc_useless_cpp_parens:
|
||||
@grep -n '^# *if .*defined *(' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found useless parentheses in cpp directive' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Require the latest GPL.
|
||||
sc_GPL_version:
|
||||
@re='either ''version [^3]' msg='GPL vN, N!=3' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
cvs_keywords = \
|
||||
Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State
|
||||
|
||||
sc_prohibit_cvs_keyword:
|
||||
@re='\$$($(cvs_keywords))\$$' \
|
||||
msg='do not use CVS keyword expansion' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Make sure we don't use st_blocks. Use ST_NBLOCKS instead.
|
||||
# This is a bit of a kludge, since it prevents use of the string
|
||||
# even in comments, but for now it does the job with no false positives.
|
||||
sc_prohibit_stat_st_blocks:
|
||||
@re='[.>]st_blocks' msg='do not use st_blocks; use ST_NBLOCKS' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Make sure we don't define any S_IS* macros in src/*.c files.
|
||||
# They're already defined via gnulib's sys/stat.h replacement.
|
||||
sc_prohibit_S_IS_definition:
|
||||
@re='^ *# *define *S_IS' \
|
||||
msg='do not define S_IS* macros; include <sys/stat.h>' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Each program that uses proper_name_utf8 must link with
|
||||
# one of the ICONV libraries.
|
||||
sc_proper_name_utf8_requires_ICONV:
|
||||
@progs=$$(grep -l 'proper_name_utf8 ''("' $$($(VC_LIST_EXCEPT)));\
|
||||
if test "x$$progs" != x; then \
|
||||
fail=0; \
|
||||
for p in $$progs; do \
|
||||
dir=$$(dirname "$$p"); \
|
||||
base=$$(basename "$$p" .c); \
|
||||
grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
|
||||
|| { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \
|
||||
done; \
|
||||
test $$fail = 1 && \
|
||||
{ echo 1>&2 '$(ME): the above do not link with any ICONV library'; \
|
||||
exit 1; } || :; \
|
||||
fi
|
||||
|
||||
# Warn about "c0nst struct Foo const foo[]",
|
||||
# but not about "char const *const foo" or "#define const const".
|
||||
sc_redundant_const:
|
||||
@grep -E '\bconst\b[[:space:][:alnum:]]{2,}\bconst\b' \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo 1>&2 '$(ME): redundant "const" in declarations'; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_const_long_option:
|
||||
@grep '^ *static.*struct option ' $$($(VC_LIST_EXCEPT)) \
|
||||
| grep -Ev 'const struct option|struct option const' && { \
|
||||
echo 1>&2 '$(ME): add "const" to the above declarations'; \
|
||||
exit 1; } || :
|
||||
|
||||
NEWS_hash = \
|
||||
$$(sed -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p' \
|
||||
$(srcdir)/NEWS | md5sum -)
|
||||
|
||||
# Ensure that we don't accidentally insert an entry into an old NEWS block.
|
||||
sc_immutable_NEWS:
|
||||
@if test -f $(srcdir)/NEWS; then \
|
||||
test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : || \
|
||||
{ echo '$(ME): you have modified old NEWS' 1>&2; exit 1; }; \
|
||||
fi
|
||||
|
||||
# Update the hash stored above. Do this after each release and
|
||||
# for any corrections to old entries.
|
||||
update-NEWS-hash: NEWS
|
||||
perl -pi -e 's/^(old_NEWS_hash = ).*/$${1}'"$(NEWS_hash)/" \
|
||||
$(srcdir)/cfg.mk
|
||||
|
||||
epoch_date = 1970-01-01 00:00:00.000000000 +0000
|
||||
# Ensure that the c99-to-c89 patch applies cleanly.
|
||||
patch-check:
|
||||
rm -rf src-c89 $@.1 $@.2
|
||||
cp -a $(srcdir)/src src-c89
|
||||
if test "x$(srcdir)" != x.; then \
|
||||
cp -a src/* src-c89; \
|
||||
dotfiles=`ls src/.[!.]* 2>/dev/null`; \
|
||||
test -z "$$dotfiles" || cp -a src/.[!.]* src-c89; \
|
||||
fi
|
||||
(cd src-c89; patch -p1 -V never --fuzz=0) < $(srcdir)/src/c99-to-c89.diff \
|
||||
> $@.1 2>&1
|
||||
if test "$(REGEN_PATCH)" = yes; then \
|
||||
diff -upr $(srcdir)/src src-c89 | sed 's,$(srcdir)/src-c89/,src/,' \
|
||||
| grep -vE '^(Only in|File )' \
|
||||
| perl -pe 's/^((?:\+\+\+|---) \S+\t).*/$${1}$(epoch_date)/;' \
|
||||
-e 's/^ $$//' \
|
||||
> new-diff || : ; fi
|
||||
grep -v '^patching file ' $@.1 > $@.2 || :
|
||||
msg=ok; test -s $@.2 && msg='fuzzy patch' || : ; \
|
||||
rm -f src-c89/*.o || msg='rm failed'; \
|
||||
$(MAKE) -C src-c89 CFLAGS='-Wdeclaration-after-statement -Werror' \
|
||||
|| msg='compile failure with extra options'; \
|
||||
test "$$msg" = ok && rm -rf src-c89 $@.1 $@.2 || echo "$$msg" 1>&2; \
|
||||
test "$$msg" = ok
|
||||
|
||||
check-AUTHORS:
|
||||
$(MAKE) -C src $@
|
||||
|
||||
# Ensure that we use only the standard $(VAR) notation,
|
||||
# not @...@ in Makefile.am, now that we can rely on automake
|
||||
# to emit a definition for each substituted variable.
|
||||
makefile-check:
|
||||
grep -nE '@[A-Z_0-9]+@' `find . -name Makefile.am` \
|
||||
&& { echo 'Makefile.maint: use $$(...), not @...@' 1>&2; exit 1; } || :
|
||||
|
||||
news-date-check: NEWS
|
||||
today=`date +%Y-%m-%d`; \
|
||||
if head NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \
|
||||
>/dev/null; then \
|
||||
:; \
|
||||
else \
|
||||
echo "version or today's date is not in NEWS" 1>&2; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
changelog-check:
|
||||
if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$' \
|
||||
>/dev/null; then \
|
||||
:; \
|
||||
else \
|
||||
echo "$(VERSION) not in ChangeLog" 1>&2; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
sc_m4_quote_check:
|
||||
@grep -nE '(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]' \
|
||||
$$($(VC_LIST_EXCEPT) | grep -E '(^configure\.ac|\.m4)$$') \
|
||||
&& { echo '$(ME): quote the first arg to AC_DEF*' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
fix_po_file_diag = \
|
||||
'you have changed the set of files with translatable diagnostics;\n\
|
||||
apply the above patch\n'
|
||||
|
||||
# Verify that all source files using _() are listed in po/POTFILES.in.
|
||||
po_file = po/POTFILES.in
|
||||
sc_po_check:
|
||||
@if test -f $(po_file); then \
|
||||
grep -E -v '^(#|$$)' $(po_file) \
|
||||
| grep -v '^src/false\.c$$' | sort > $@-1; \
|
||||
files=; \
|
||||
for file in $$($(VC_LIST_EXCEPT)); do \
|
||||
case $$file in \
|
||||
*.m4) continue;; \
|
||||
*.?|*.??) ;; \
|
||||
*) continue;; \
|
||||
esac; \
|
||||
case $$file in \
|
||||
*.[ch]) \
|
||||
base=`expr " $$file" : ' \(.*\)\..'`; \
|
||||
{ test -f $$base.l || test -f $$base.y; } && continue;; \
|
||||
esac; \
|
||||
files="$$files $$file"; \
|
||||
done; \
|
||||
grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files \
|
||||
| sort -u > $@-2; \
|
||||
diff -u -L $(po_file) -L $(po_file) $@-1 $@-2 \
|
||||
|| { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; }; \
|
||||
rm -f $@-1 $@-2; \
|
||||
fi
|
||||
|
||||
# Sometimes it is useful to change the PATH environment variable
|
||||
# in Makefiles. When doing so, it's better not to use the Unix-centric
|
||||
# path separator of `:', but rather the automake-provided `@PATH_SEPARATOR@'.
|
||||
# It'd be better to use `find -print0 ...|xargs -0 ...', but less portable,
|
||||
# and there probably aren't many projects with so many Makefile.am files
|
||||
# that we'd have to worry about limits on command line length.
|
||||
msg = '$(ME): Do not use `:'\'' above; use @PATH_SEPARATOR@ instead'
|
||||
sc_makefile_path_separator_check:
|
||||
@grep -n 'PATH=.*:' `find $(srcdir) -name Makefile.am` \
|
||||
&& { echo $(msg) 1>&2; exit 1; } || :
|
||||
|
||||
# Check that `make alpha' will not fail at the end of the process.
|
||||
writable-files:
|
||||
if test -d $(release_archive_dir); then :; else \
|
||||
for file in $(distdir).tar.gz \
|
||||
$(release_archive_dir)/$(distdir).tar.gz; do \
|
||||
test -e $$file || continue; \
|
||||
test -w $$file \
|
||||
|| { echo ERROR: $$file is not writable; fail=1; }; \
|
||||
done; \
|
||||
test "$$fail" && exit 1 || : ; \
|
||||
fi
|
||||
|
||||
v_etc_file = lib/version-etc.c
|
||||
sample-test = tests/sample-test
|
||||
texi = doc/$(PACKAGE).texi
|
||||
# Make sure that the copyright date in $(v_etc_file) is up to date.
|
||||
# Do the same for the $(sample-test) and the main doc/.texi file.
|
||||
sc_copyright_check:
|
||||
@if test -f $(v_etc_file); then \
|
||||
grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \
|
||||
>/dev/null \
|
||||
|| { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \
|
||||
exit 1; }; \
|
||||
fi
|
||||
@if test -f $(sample-test); then \
|
||||
grep '# Copyright (C) '$$(date +%Y)' Free' $(sample-test) \
|
||||
>/dev/null \
|
||||
|| { echo 'out of date copyright in $(sample-test); update it' 1>&2; \
|
||||
exit 1; }; \
|
||||
fi
|
||||
@if test -f $(texi); then \
|
||||
grep 'Copyright @copyright{} .*'$$(date +%Y)' Free' $(texi) \
|
||||
>/dev/null \
|
||||
|| { echo 'out of date copyright in $(texi); update it' 1>&2; \
|
||||
exit 1; }; \
|
||||
fi
|
||||
|
||||
vc-diff-check:
|
||||
$(VC) diff > vc-diffs || :
|
||||
if test -s vc-diffs; then \
|
||||
cat vc-diffs; \
|
||||
echo "Some files are locally modified:" 1>&2; \
|
||||
exit 1; \
|
||||
else \
|
||||
rm vc-diffs; \
|
||||
fi
|
||||
|
||||
cvs-check: vc-diff-check
|
||||
|
||||
maintainer-distcheck:
|
||||
$(MAKE) distcheck
|
||||
$(MAKE) my-distcheck
|
||||
|
||||
|
||||
# Don't make a distribution if checks fail.
|
||||
# Also, make sure the NEWS file is up-to-date.
|
||||
vc-dist: $(local-check) cvs-check maintainer-distcheck
|
||||
$(MAKE) dist
|
||||
|
||||
# Use this to make sure we don't run these programs when building
|
||||
# from a virgin tgz file, below.
|
||||
null_AM_MAKEFLAGS = \
|
||||
ACLOCAL=false \
|
||||
AUTOCONF=false \
|
||||
AUTOMAKE=false \
|
||||
AUTOHEADER=false \
|
||||
MAKEINFO=false
|
||||
|
||||
built_programs = $$(cd src && MAKEFLAGS= $(MAKE) -s built_programs.list)
|
||||
|
||||
warn_cflags = -Dlint -O -Werror -Wall -Wformat -Wshadow -Wpointer-arith
|
||||
bin=bin-$$$$
|
||||
|
||||
write_loser = printf '\#!%s\necho $$0: bad path 1>&2; exit 1\n' '$(SHELL)'
|
||||
|
||||
TMPDIR ?= /tmp
|
||||
t=$(TMPDIR)/$(PACKAGE)/test
|
||||
pfx=$(t)/i
|
||||
|
||||
# More than once, tainted build and source directory names would
|
||||
# have caused at least one "make check" test to apply "chmod 700"
|
||||
# to all directories under $HOME. Make sure it doesn't happen again.
|
||||
tp := $(shell echo "$(TMPDIR)/$(PACKAGE)-$$$$")
|
||||
t_prefix = $(tp)/a
|
||||
t_taint = '$(t_prefix) b'
|
||||
fake_home = $(tp)/home
|
||||
|
||||
# Ensure that tests run from tainted build and src dir names work,
|
||||
# and don't affect anything in $HOME. Create witness files in $HOME,
|
||||
# record their attributes, and build/test. Then ensure that the
|
||||
# witnesses were not affected.
|
||||
taint-distcheck: $(DIST_ARCHIVES)
|
||||
test -d $(t_taint) && chmod -R 700 $(t_taint) || :
|
||||
-rm -rf $(t_taint) $(fake_home)
|
||||
mkdir -p $(t_prefix) $(t_taint) $(fake_home)
|
||||
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t_taint) -zxf $(distdir).tar.gz
|
||||
mkfifo $(fake_home)/fifo
|
||||
touch $(fake_home)/f
|
||||
mkdir -p $(fake_home)/d/e
|
||||
ls -lR $(fake_home) $(t_prefix) > $(tp)/.ls-before
|
||||
cd $(t_taint)/$(distdir) \
|
||||
&& ./configure \
|
||||
&& $(MAKE) \
|
||||
&& HOME=$(fake_home) $(MAKE) check \
|
||||
&& ls -lR $(fake_home) $(t_prefix) > $(tp)/.ls-after \
|
||||
&& diff $(tp)/.ls-before $(tp)/.ls-after \
|
||||
&& test -d $(t_prefix)
|
||||
rm -rf $(tp)
|
||||
|
||||
# Verify that a twisted use of --program-transform-name=PROGRAM works.
|
||||
define install-transform-check
|
||||
echo running install-transform-check \
|
||||
&& rm -rf $(pfx) \
|
||||
&& $(MAKE) program_transform_name='s/.*/zyx/' \
|
||||
prefix=$(pfx) install \
|
||||
&& test "$$(echo $(pfx)/bin/*)" = "$(pfx)/bin/zyx" \
|
||||
&& test "$$(find $(pfx)/share/man -type f|sed 's,.*/,,;s,\..*,,')" = "zyx"
|
||||
endef
|
||||
|
||||
# Install, then verify that all binaries and man pages are in place.
|
||||
# Note that neither the binary, ginstall, nor the ].1 man page is installed.
|
||||
define my-instcheck
|
||||
$(MAKE) prefix=$(pfx) install \
|
||||
&& test ! -f $(pfx)/bin/ginstall \
|
||||
&& { fail=0; \
|
||||
for i in $(built_programs); do \
|
||||
test "$$i" = ginstall && i=install; \
|
||||
for j in "$(pfx)/bin/$$i" \
|
||||
"$(pfx)/share/man/man1/$$i.1"; do \
|
||||
case $$j in *'[.1') continue;; esac; \
|
||||
test -f "$$j" && : \
|
||||
|| { echo "$$j not installed"; fail=1; }; \
|
||||
done; \
|
||||
done; \
|
||||
test $$fail = 1 && exit 1 || :; \
|
||||
}
|
||||
endef
|
||||
|
||||
define coreutils-path-check
|
||||
{ \
|
||||
if test -f $(srcdir)/src/true.c; then \
|
||||
fail=1; \
|
||||
mkdir $(bin) \
|
||||
&& ($(write_loser)) > $(bin)/loser \
|
||||
&& chmod a+x $(bin)/loser \
|
||||
&& for i in $(built_programs); do \
|
||||
case $$i in \
|
||||
rm|expr|basename|echo|sort|ls|tr);; \
|
||||
cat|dirname|mv|wc);; \
|
||||
*) ln $(bin)/loser $(bin)/$$i;; \
|
||||
esac; \
|
||||
done \
|
||||
&& ln -sf ../src/true $(bin)/false \
|
||||
&& PATH=`pwd`/$(bin):$$PATH $(MAKE) -C tests check \
|
||||
&& { test -d gnulib-tests \
|
||||
&& $(MAKE) -C gnulib-tests check \
|
||||
|| :; } \
|
||||
&& rm -rf $(bin) \
|
||||
&& fail=0; \
|
||||
else \
|
||||
fail=0; \
|
||||
fi; \
|
||||
test $$fail = 1 && exit 1 || :; \
|
||||
}
|
||||
endef
|
||||
|
||||
# Use -Wformat -Werror to detect format-string/arg-list mismatches.
|
||||
# Also, check for shadowing problems with -Wshadow, and for pointer
|
||||
# arithmetic problems with -Wpointer-arith.
|
||||
# These CFLAGS are pretty strict. If you build this target, you probably
|
||||
# have to have a recent version of gcc and glibc headers.
|
||||
# The hard-linking for-loop below ensures that there is a bin/ directory
|
||||
# full of all of the programs under test (except the ones that are required
|
||||
# for basic Makefile rules), all symlinked to the just-built "false" program.
|
||||
# This is to ensure that if ever a test neglects to make PATH include
|
||||
# the build srcdir, these always-failing programs will run.
|
||||
# Otherwise, it is too easy to test the wrong programs.
|
||||
# Note that "false" itself is a symlink to true, so it too will malfunction.
|
||||
my-distcheck: $(DIST_ARCHIVES) $(local-check)
|
||||
$(MAKE) syntax-check
|
||||
$(MAKE) check
|
||||
-rm -rf $(t)
|
||||
mkdir -p $(t)
|
||||
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
|
||||
cd $(t)/$(distdir) \
|
||||
&& ./configure --disable-nls \
|
||||
&& $(MAKE) CFLAGS='$(warn_cflags)' \
|
||||
AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \
|
||||
&& $(MAKE) dvi \
|
||||
&& $(install-transform-check) \
|
||||
&& $(my-instcheck) \
|
||||
&& $(coreutils-path-check) \
|
||||
&& $(MAKE) distclean
|
||||
(cd $(t) && mv $(distdir) $(distdir).old \
|
||||
&& $(AMTAR) -zxf - ) < $(distdir).tar.gz
|
||||
diff -ur $(t)/$(distdir).old $(t)/$(distdir)
|
||||
-rm -rf $(t)
|
||||
@echo "========================"; \
|
||||
echo "$(distdir).tar.gz is ready for distribution"; \
|
||||
echo "========================"
|
||||
|
||||
cvs-to-git = '\#!/usr/bin/perl\n\
|
||||
use warnings;\n\
|
||||
use strict;\n\
|
||||
use File::Find;\n\
|
||||
use File::Copy;\n\
|
||||
\n\
|
||||
find ({wanted =>\n\
|
||||
sub {$$_ eq q/.cvsignore/ or return;\n\
|
||||
my $$gi = q/.gitignore/;\n\
|
||||
unlink $$gi;\n\
|
||||
copy($$_, $$gi) or die qq/copy failed: $$_->$$gi: $$!\\n/;\n\
|
||||
chmod 0444, $$gi;\n\
|
||||
}},\n\
|
||||
q!.!);\n'
|
||||
|
||||
.PHONY: sync-vcs-ignore-files
|
||||
c2g = cvs-to-git
|
||||
sync-vcs-ignore-files:
|
||||
rm -f $(c2g)-t $(c2g)
|
||||
printf $(cvs-to-git) > $(c2g)-t
|
||||
chmod a+x-w $(c2g)-t
|
||||
mv $(c2g)-t $(c2g)
|
||||
perl $(c2g)
|
||||
rm -f $(c2g)
|
||||
echo "syntax: glob" > .hgignore
|
||||
( for ignore in $$($(VC_LIST) \
|
||||
| grep -E '(^|/)\.gitignore$$'); do \
|
||||
dir=$$(dirname "$$ignore"); \
|
||||
test "$$dir" = . && pfx= || pfx=$$dir/; \
|
||||
sed "s!^!$$pfx!" "$$ignore"; \
|
||||
done ) | sort -u >> .hgignore
|
611
NEWS
611
NEWS
@ -5,6 +5,546 @@
|
||||
http://libvirt.org/news.html
|
||||
|
||||
|
||||
0.7.1: Sep 15 2009:
|
||||
- New features:
|
||||
Add support for encrypted (qcow) volume creation. (Miloslav Trmač),
|
||||
Secret manipulation public API (Miloslav Trmač),
|
||||
Multipath storage support module (Dave Allan),
|
||||
VBox add Storage Volume support (Pritesh Kothari),
|
||||
Support configuration of huge pages in guests (Daniel P. Berrange),
|
||||
Support new PolicyKit 1.0 API (Daniel P. Berrange),
|
||||
Compressed save image format for Qemu (Chris Lalancette, Charles Duffy
|
||||
and Jim Meyering),
|
||||
QEmu add host PCI device hotplug support (Mark McLoughlin)
|
||||
|
||||
- Documentation:
|
||||
Minor comment changes (Laine Stump),
|
||||
Fix up virNodeGetCellsFreeMemory (Chris Lalancette),
|
||||
Fix some typos and remove unhelpful acronyms in QEMU docs (Daniel P. Berrange),
|
||||
Add documentation about the QEMU driver security features (Daniel P. Berrange),
|
||||
Remove 'the-the' typo in docs (Daniel P. Berrange),
|
||||
Fix some URLs in virsh manpage (Mark McLoughlin),
|
||||
Add link to AbiCloud web management system (Daniel P. Berrange),
|
||||
Update logging documentation (Amy Griffis)
|
||||
|
||||
- Portability:
|
||||
Fix win32 platform build (Daniel P. Berrange)
|
||||
|
||||
- Bug fixes:
|
||||
VBox bug when starting machine from old versions (Pritesh Kothari),
|
||||
ESX avoid potential leaks (Matthias Bolte),
|
||||
Fix more OOM handling bugs (Daniel P. Berrange),
|
||||
Fix logging buffer overrun read (Daniel P. Berrange),
|
||||
Fix misc thread locking bugs / bogus warnings (Daniel P. Berrange),
|
||||
Fix regression from "Avoid polling on FDs with no events" (Chris Lalancette),
|
||||
Close logfile fd after spawning qemu (Ryota Ozaki),
|
||||
Check for libssh2 >= 1.0 for phy driver (Maximilian Wilhelm),
|
||||
Avoid another leak in src/xend_internal.c (Matthias Bolte),
|
||||
Avoid a leak in xenDaemonLookupByID (Matthias Bolte),
|
||||
VBox fix minor bugs in display and added OOM checks (Pritesh Kothari),
|
||||
Some close/fclose/closedir calls are missing (Matthias Bolte),
|
||||
lxc_container.c: avoid a leak on error paths (Jim Meyering),
|
||||
Fix several memory leaks (Ryota Ozaki),
|
||||
Fix a memory leak in virsh (Laine Stump),
|
||||
Fix ID field in virDomainPtr after starting Xen VM (Daniel P. Berrange),
|
||||
Fix memory leak of monitor character device (Daniel P. Berrange),
|
||||
Automatically set correct ownership of QEMU state directories (Daniel P. Berrange),
|
||||
Avoid polling on FDs with no events enabled (Daniel P. Berrange),
|
||||
esx_vi: return -1 upon failure, as intended (Matthias Bolte),
|
||||
python: let libvirt_virConnectDomainEventCallback indicate success (Jim Meyering),
|
||||
uml_conf.c: don't return an uninitialized pointer (Jim Meyering),
|
||||
storage_backend.c: assure clang that inputvol can't be NULL (Jim Meyering),
|
||||
libvir.c: avoid NULL dereference in virStoragePoolSetAutostart (Jim Meyering),
|
||||
lxc: avoid NULL dereference upon getmntent failure (Jim Meyering),
|
||||
storage_backend_fs: avoid NULL dereference on opendir failure (Jim Meyering),
|
||||
Fix bugs in virDomainMigrate v2 code. (Chris Lalancette),
|
||||
VMware ESX: Don't warn on some query parameter (Matthias Bolte),
|
||||
Don't blindly reorder disk drives (Daniel P. Berrange),
|
||||
Fix sexpr2string() to handle empty list. (Jim Fehlig),
|
||||
Fix driver entry table for UML numa APIs (Daniel P. Berrange),
|
||||
Fix crash in virsh vol-key command (Pritesh Kothari),
|
||||
517157 fix selinux problem with images on NFS (Darryl L. Pierce),
|
||||
Fix phypOpen() escape_specialcharacters (Mattias Bolte),
|
||||
Power Hypervisor: fix potential segfault (Mattias Bolte),
|
||||
Fix bridge/tap system error reporting (Mark McLoughlin),
|
||||
Reset PCI host devices after hot-unplug (Mark McLoughlin),
|
||||
Reset unmanaged PCI host devices before hotplug (Mark McLoughlin),
|
||||
Fix up connection reference counting. (Chris Lalancette),
|
||||
Fix LXC driver crash when kernel doesn't support clone (Daniel P. Berrange),
|
||||
Make LXC / UML drivers robust against NUMA topology brokenness (Daniel P. Berrange),
|
||||
Run 'cont' on successful migration finish. (Chris Lalancette),
|
||||
Fix QEMU domain status after restore. (Chris Lalancette),
|
||||
Handle kernels with no ipv6 support (Mark McLoughlin),
|
||||
Set perms on /var/lib/libvirt/boot to 0711 (Mark McLoughlin),
|
||||
chown kernel/initrd before spawning qemu (Mark McLoughlin),
|
||||
Several fixes to libvirtd's log setup (Amy Griffis),
|
||||
Fix memleak if esxOpen fails (Matthias Bolte)
|
||||
|
||||
- Improvement:
|
||||
support lzop save compression for qemu (Charles Duffy),
|
||||
VBox 3.0.6 API change support (Pritesh Kothari),
|
||||
Add UUID definition required by storage encryption import (Daniel P. Berrange),
|
||||
Make secrets RNG more strict (Daniel P. Berrange),
|
||||
Fill in secret UUID for qcow encryption (Daniel P. Berrange),
|
||||
Add usage type/id as a public API property of virSecret (Daniel P. Berrange),
|
||||
Fix UUID handling in secrets/storage encryption APIs (Daniel P. Berrange),
|
||||
Save vcpuinfo in status file (Daniel P. Berrange),
|
||||
Restart libvirtd upon RPM upgrade (Daniel P. Berrange),
|
||||
Add support for qcow encrypted volumes to qemu. (Miloslav Trmač),
|
||||
Provide missing passphrase when creating a volume. (Miloslav Trmač),
|
||||
Add virsh commands for secrets APIs (Miloslav Trmač),
|
||||
Local file implementation of secret driver API (Miloslav Trmač),
|
||||
Mask out flags used internally for virSecretGetValue (Miloslav Trmač),
|
||||
Add <usage> to <secret> docs (Miloslav Trmač),
|
||||
also allow use of XZ for Qemu image compression (Jim Meyering),
|
||||
Support relabelling of USB and PCI devices (Daniel P. Berrange),
|
||||
Add helper APIs for iterating over PCI device resource files (Daniel P. Berrange),
|
||||
Add helper module for dealing with USB host devices (Daniel P. Berrange),
|
||||
Test that domain-specific qemu machine types are used correctly (Mark McLoughlin),
|
||||
Probe machine types from kvm binary too (Mark McLoughlin),
|
||||
Look up machine types from all domains in qemudGetOldMachines() (Mark McLoughlin),
|
||||
Test qemu machine aliases (Mark McLoughlin),
|
||||
Add qemu -help test data for qemu-kvm-0.11.0-rc2 (Mark McLoughlin),
|
||||
Add a more featureful qemu capabilities test data (Mark McLoughlin),
|
||||
Add arm arch to capabilities schema (Mark McLoughlin),
|
||||
Update capabilities schema to allow multiple machines per domain (Mark McLoughlin),
|
||||
Add esx and tcp migration uri transports to capabilities schema (Mark McLoughlin),
|
||||
Reintroduce support for lzop compression (Charles Duffy),
|
||||
build: update gnulib submodule to latest (Jim Meyering),
|
||||
Add flags and requires for Multipath storage (Daniel Veillard),
|
||||
ESX raise error if UUID parse failed (Matthias Bolte),
|
||||
ESX add domain undefine based on esxVI_UnregisterVM (Matthias Bolte),
|
||||
ESX add esxGetCapabilities() with basic defaults (Matthias Bolte),
|
||||
Switch Power Hypervisor to libssh2 (Eduardo Otubo),
|
||||
Allow libvirtd to RPC to external libvirtd (Chris Lalancette),
|
||||
Add support for setting disk drive serial numbers (Daniel P. Berrange),
|
||||
VBox support for defining/dumping video devices (Pritesh Kothari),
|
||||
Generic parsing support for video acceleration (Pritesh Kothari),
|
||||
VMware ESX: Allow ethernet address type 'vpx' (Matthias Bolte),
|
||||
Support for getting/setting number of cpus in VBox (Pritesh Kothari),
|
||||
Make handling of monitor prompts more general. (Miloslav Trmač),
|
||||
Attach encryption information to virDomainDiskDef. (Miloslav Trmač),
|
||||
Recognize encryption format of qcow volumes. (Miloslav Trmač),
|
||||
Attach encryption information to virStorageVolDef. (Miloslav Trmač),
|
||||
Add volume encryption information handling. (Miloslav Trmač),
|
||||
Secret manipulation API docs refresh and wire up python generator (Miloslav Trmač),
|
||||
Secret manipulation remote client (Miloslav Trmač),
|
||||
Secret manipulation libvirtd wire protocol and remote dispatcher (Miloslav Trmač),
|
||||
Secret manipulation public API implementation (Miloslav Trmač),
|
||||
Secret manipulation internal API (Miloslav Trmač),
|
||||
Add test for recently fixed crash with latest XenD (Daniel P. Berrange),
|
||||
Don't expose 'vnet%d' to the user (Mark McLoughlin),
|
||||
Maintain a list of active PCI hostdevs and use it in pciResetDevice() (Mark McLoughlin),
|
||||
Simplify PCI hostdev prepare/re-attach using a pciDeviceList type (Mark McLoughlin),
|
||||
Use pci_addr=auto with QEMU's pci_add monitor command (Mark McLoughlin),
|
||||
Check active domain hostdevs before allowing PCI reset (Mark McLoughlin),
|
||||
Allow pciResetDevice() to reset multiple devices (Mark McLoughlin),
|
||||
Improve PCI host device reset error message (Mark McLoughlin),
|
||||
Reset and re-attach PCI host devices on guest shutdown (Mark McLoughlin),
|
||||
Allow PM reset on multi-function PCI devices (Mark McLoughlin),
|
||||
Detect KVM's PCI device assignment support (Mark McLoughlin),
|
||||
Split virDomainMigrate into functions. (Chris Lalancette),
|
||||
Consolidate code for parsing the logging env (Amy Griffis)
|
||||
|
||||
- Cleanups:
|
||||
Remove accidentally added UUID re-definition in storage schema (Daniel P. Berrange),
|
||||
ESX cleanup of CPU model strings (Matthias Bolte),
|
||||
Fix use of dlopen modules (Daniel P. Berrange),
|
||||
Consolidate "cont" into qemudMonitorSendCont() (Miloslav Trmač),
|
||||
Cleanup sec driver error reporting to use virReportSystemError (Daniel P. Berrange),
|
||||
Port QEMU driver to use USB/PCI device helpers (Daniel P. Berrange),
|
||||
Simplify and fix qemudCanonicalizeMachine() (Mark McLoughlin),
|
||||
Split up qemudGetOldMachines() (Mark McLoughlin),
|
||||
Re-factor qemu test machine allocation code (Mark McLoughlin),
|
||||
Canonicalize the qemu machine type in qemuxml2argvtest (Mark McLoughlin),
|
||||
Dump qemu driver capabilities if test debugging enabled (Mark McLoughlin),
|
||||
Fix formatting of machine types in capabilities XML (Mark McLoughlin),
|
||||
qemu_driver.c: factor out more duplication (Jim Meyering),
|
||||
Deprecate lzma and lzop in favor of xz, add dep (Daniel Veillard),
|
||||
qemu_driver.c: factor out duplication in compression-type handling (Jim Meyering),
|
||||
openvz_conf.c: remove dead store to "p"; use strchrnul (Jim Meyering),
|
||||
Remove some tabs used for indent (Daniel Veillard),
|
||||
Updated a number of localizations and regenerated (Daniel Veillard),
|
||||
Add a missing comment (Miloslav Trmač),
|
||||
Fix a pasto in storage_encryption_conf.c (Miloslav Trmač),
|
||||
xm_internal.c: remove four useless comparisons after strchr (Jim Meyering),
|
||||
xm_internal.c: remove dead increment of "data" (Jim Meyering),
|
||||
network_driver.c: remove dead store to "err" (Jim Meyering),
|
||||
iptables.c: remove dead store to "s" (Jim Meyering),
|
||||
util.c: avoid dead store to "flag" (Jim Meyering),
|
||||
domain_conf.c: remove two dead stores (Jim Meyering),
|
||||
xm_internal.c: remove two ret=... dead stores (Jim Meyering),
|
||||
xm_internal.c: remove dead stores of local, "type" (Jim Meyering),
|
||||
network_conf.c: remove dead store to "err" (Jim Meyering),
|
||||
openvz_driver.c: avoid dead store to "err" (Jim Meyering),
|
||||
xend_internal.c: Remove two dead stores to "ret" (Jim Meyering),
|
||||
storage_driver.c: remove two dead stores to "backend" (Jim Meyering),
|
||||
qemu_conf.c: add a comment suggesting why we leave a dead-store (Jim Meyering),
|
||||
hash.c: remove a dead store (Jim Meyering),
|
||||
interface_conf.c: remove a dead-store and declaration (Jim Meyering),
|
||||
eventtest.c: detect write failure and avoid dead stores (Jim Meyering),
|
||||
openvz_conf.c: Remove dead store to copy_fd (Jim Meyering),
|
||||
storage_backend_logical.c: appease clang: remove useless increment (Jim Meyering),
|
||||
ESX simplify SOAP request and response handling (Matthias Bolte),
|
||||
ESX use virXPathNode*() to simplify XPath handling (Matthias Bolte),
|
||||
ESX: make esxVI_GetVirtualMachineIdentity() robust (Matthias Bolte),
|
||||
ESX: Fix VMX path parsing and URL encoding (Matthias Bolte),
|
||||
VBox driver cleanups (Pritesh Kothari),
|
||||
PHYP driver cleanups (Daniel Veillard),
|
||||
Move QEMU monitor socket in /var/lib/libvirt/qemu (Daniel P. Berrange),
|
||||
xen_internal.c: remove two unused local variables (Jim Meyering),
|
||||
mdns.c: remove dead initialization (Jim Meyering),
|
||||
node_device_conf.c: remove dead initialization (Jim Meyering),
|
||||
openvz_conf.c: don't use undefined local, "net" (Jim Meyering),
|
||||
test.c: don't use undefined local, "def" (Jim Meyering),
|
||||
remote_internal.c: appease clang (Jim Meyering),
|
||||
infra: define ATTRIBUTE_NONNULL to mark non-NULL parameters (Jim Meyering),
|
||||
lxc: don't unlink(NULL) in main (Jim Meyering),
|
||||
storage_conf.c: avoid overflow upon use of "z" or "Z" (zebi) suffix (Jim Meyering),
|
||||
VBox cleanup and update of networking shutdown (Pritesh Kothari),
|
||||
Box cleanup and update of networking XML functions (Pritesh Kothari),
|
||||
Fix misc OOM bugs (Daniel P. Berrange),
|
||||
Misc fixes to secrets API code (Daniel P. Berrange),
|
||||
Only add glusterfs dep for Fedora >= 11 (Daniel P. Berrange),
|
||||
Remove redundant base64 include file (Daniel P. Berrange),
|
||||
Don't assume buffered output echoes the command. (Miloslav Trmač),
|
||||
Update chinese, polish and spanish localizations (Daniel Veillard),
|
||||
OpenVZ: accept NULL as type for GetMaxVCPUs. (Chris Lalancette),
|
||||
Remove use of strncpy in qemudExtractMonitorPath. (Chris Lalancette),
|
||||
Refactor policycode auth code to avoid compiler warnings (Daniel P. Berrange),
|
||||
spec file: add URL to Source tag (Mark McLoughlin),
|
||||
Small fixes for qemu save compression. (Chris Lalancette),
|
||||
Fix thinko in PCI hostdev detach (Mark McLoughlin),
|
||||
Revert changes to allow pciResetDevice() reset multiple devices (Mark McLoughlin),
|
||||
Fix list updating after disk/network/hostdev hot-unplug (Mark McLoughlin),
|
||||
Re-name remote_internal.c:driver to remote_driver (Mark McLoughlin),
|
||||
Cosmetic change to 'virsh nodedev-list --tree' output (Mark McLoughlin),
|
||||
Re-factor hostdev hotplug (Mark McLoughlin),
|
||||
Remove a duplicated assignment in Xen PCI parsing. (Chris Lalancette),
|
||||
Fix up a few minor indentation issues. (Chris Lalancette),
|
||||
Fix phyp escape_specialcharacters. (Chris Lalancette),
|
||||
Make openvzGetVPSUUID take a len. (Chris Lalancette),
|
||||
Minor cleanup of error path for c_oneVmInfo. (Chris Lalancette),
|
||||
Fix up a whitespace in comments in src/console.c (Chris Lalancette),
|
||||
Fix up a stray whitespace in virHashGrow. (Chris Lalancette),
|
||||
Remove unsafe strncpy from esx_vmx.c (Chris Lalancette),
|
||||
Cleanup VIR_LOG_DEBUG parsing in eventtest (Amy Griffis),
|
||||
Tighten libvirt's parsing of logging env (Amy Griffis),
|
||||
Cleanup structure name naming (Matthias Bolte),
|
||||
Add proper OOM reporting for esxDomainGetOSType (Matthias Bolte)
|
||||
|
||||
|
||||
|
||||
0.7.0: Aug 5 2009:
|
||||
- New features: Interface implementation based on netcf (Laine Stump,
|
||||
Daniel Veillard), Add new net filesystem glusterfs (Harshavardhana),
|
||||
Initial VMWare ESX driver (Matthias Bolte), Add support for VBox
|
||||
3 and event callbacks on vbox (Pritesh Kothari), First version
|
||||
of the Power Hypervisor driver (Eduardo Otubo), Run QEMU guests
|
||||
as an unprivileged user (Daniel P. Berrange), Support cgroups
|
||||
in QEMU driver (Daniel P. Berrange), QEmu hotplug NIC support
|
||||
(Mark McLoughlin), Storage cloning for LVM and Disk backends(Cole
|
||||
Robinson), Switching to GIT (Jim Meyering)
|
||||
- Documentation: Typo and comment fixes (Aron Griffis),
|
||||
Fix virCapabilitiesDefaultGuestMachine documentation. (Chris
|
||||
Lalancette), ESX Scheduler documentation and cleanup (Matthias
|
||||
Bolte), Update the java bindings page (Bryan Kearney), Added
|
||||
Matthias Bolte to AUTHORS list (Daniel Veillard), doc: clone+build
|
||||
instructions (Jim Meyering), docs: say that the old repository
|
||||
is deprecated... (Jim Meyering), document tcp listen and raw
|
||||
wire option (Guido Günther), Fix docs and code disagreements
|
||||
for character devices. (Cole Robinson), Fix documentation of
|
||||
virStoragePoolUndefine return (Thomas Treutner), Fix gitweb link on
|
||||
download page. (Cole Robinson), update download informations after
|
||||
switch to git (Daniel Veillard), Update links to bugzilla (Garry
|
||||
Dolley), Update the links for RHEL libvirt bugzillas (Garry Dolley)
|
||||
- Portability: Xen Inotify support needs sys/inotify.h
|
||||
(Maximilian Wilhelm), Workaround for broken GCC in Debian Etch
|
||||
(Maximilian Wilhelm), LXC driver requires sched.h and unshare()
|
||||
(Maximilian Wilhelm), Configure UML support only if sys/inotify.h
|
||||
present (Maximilian Wilhelm), Fix libcurl automatic check and ESX
|
||||
status (Maximilian Wilhelm), Enable ESX driver build on Mingw32
|
||||
(Daniel P. Berrange), Fix build on mingw32 by disabling netcf
|
||||
(Daniel P. Berrange), Reduce glusterfs dependency to 2.0.1
|
||||
(Mark McLoughlin), Desactivate phyp build and indicate libssh
|
||||
builreq (Daniel Veillard), Fix misc Win32 compile warnings
|
||||
(Daniel P. Berrange), Rename variable for compilation in Mingw32
|
||||
(end) (Laine Stump), Rename variable for compilation in Mingw32
|
||||
(Laine Stump), rpm spec cleanup and split off client only package
|
||||
(Daniel Veillard)
|
||||
- Bug fixes: Add uniqueness checking for LXC define/create methods
|
||||
(Daniel P. Berrange), Fix removal of transient VMs when LXC aborts
|
||||
(Daniel P. Berrange), Don't try to activate cgroups if not present
|
||||
for LXC (Daniel P. Berrange), Refresh /etc/xen if inotify wasn't
|
||||
(Cole Robinson), Don't loose id on xen domain redefine (Cole
|
||||
Robinson), Fix memory leak in openvz driver (Daniel P. Berrange),
|
||||
Protected against potential crash scenarios (Daniel P. Berrange),
|
||||
Fix crash when attempting to shutdown inactive QEMU vm (Daniel
|
||||
P. Berrange), Fix PCIe FLR detection (Mark McLoughlin), Set perms
|
||||
on /var/lib/libvirt/images to 0711 (Mark McLoughlin), Fix problem
|
||||
writing QEMU pidfile (Daniel P. Berrange), Fix vcpupin on Xen
|
||||
problem (Henrik Persson), Fix RPM upgrades from F11 to F12 (Daniel
|
||||
P. Berrange), Fix deadlock in remote driver domain events (Daniel
|
||||
P. Berrange), qemu: fix monitor socket reconnection (Ryota Ozaki),
|
||||
Fix polkit/netcf disabling on older fedoras (Mark McLoughlin),
|
||||
Fix crashes in Xen capabilities code (Daniel P. Berrange),
|
||||
Always add -no-kvm and -no-kqemu, for qemu domains (Jim Paris),
|
||||
Avoid raising an internal error (Paolo Bonzini), Don't allow NULL
|
||||
paths for BlockStats and InterfaceStats (Cole Robinson), Don't
|
||||
leak vm-monitorpath on re-connect (Mark McLoughlin), Don't restore
|
||||
labels on shared/readonly disks (Daniel P. Berrange), Ensure spawned
|
||||
children have a stderr/out set to /dev/null if requested (Daniel
|
||||
P. Berrange), Ensure test:/// URIs get routed to the non-privileged
|
||||
libvirtd (Daniel P. Berrange), fix another failing "make distcheck"
|
||||
(qemuhelptest) (Jim Meyering), Fix an uninitialized variable
|
||||
in Unix socket open (Jun Koi), Fix configure flags in spec file
|
||||
(Daniel Veillard), Fix error reporting for security driver over
|
||||
remote protocol (Daniel P. Berrange), fix failing "make distcheck"
|
||||
(Jim Meyering), Fix free of unitialized data upon PCI open fail
|
||||
(Daniel P. Berrange), Fix informations about previous git server
|
||||
(Daniel Veillard), Fix memory leaks in esxDomainDumpXML (Matthias
|
||||
Bolte), Fix multiple memory leaks in virsh (Laine Stump), Fix PCI
|
||||
device hotplug/unplug with newer QEMU (Daniel P. Berrange), Fix
|
||||
problem with QEMU monitor welcome prompt confusing libvirt after a
|
||||
libvirtd daemon restart with active guests (Daniel P. Berrange),
|
||||
Fix python examples to use read-write conn (Dan Kenigsberg), Fix
|
||||
reconnect bug for VBox (Pritesh Kothari), Fix SELinux denial during
|
||||
hotplug (Daniel P. Berrange), Fix typo in check for glusterfs format
|
||||
pools (Daniel P. Berrange), Fix typo in storage cloning (Daniel
|
||||
P. Berrange), qemu: Check driver is initialized up front, to avoid
|
||||
segfault. (Cole Robinson), qemu: Try multiple times to open unix
|
||||
monitor socket (Cole Robinson), Release conn lock before reporting
|
||||
errors (end) (Laine Stump), Release conn lock before reporting
|
||||
interface errors (Laine Stump), Remove the network backend if NIC
|
||||
hotplug fails (Mark McLoughlin), Set specific flags for glusterfs
|
||||
fs mounts (Harshavardhana), storage: disk: Default to 'ext2' for
|
||||
new volumes. (Cole Robinson), storage: disk: Fix parthelper '-g'
|
||||
option handling. (Cole Robinson), storage: disk: Fix segfault
|
||||
creating volume without target path (Cole Robinson), storage:
|
||||
Fix deadlock when cloning across pools. (Cole Robinson), Update
|
||||
modified mac address in place in virGetInterface (Laine Stump)
|
||||
- Improvements: Add an allocation unit when calling qemu-img
|
||||
(Ryota Ozaki), Improve diagnostics when pidfile writing fails
|
||||
(Daniel P. Berrange), Disable IPv6 on virtual networks (Daniel
|
||||
P. Berrange), Allow dnsmasq to provide DNS without DHCP (Daniel
|
||||
P. Berrange), Fix an initialization problem in previous patch
|
||||
(Aron Griffis), Remove MAX_TAP_ID and let kernel do numbering
|
||||
(Aron Griffis), Kernel command line support for UML (Ron Yorston),
|
||||
Activate the interface drivers, and cleanups (Daniel Veillard),
|
||||
Add an error code for conflicting mac addresses (Laine Stump),
|
||||
Add a test interface driver (Laine Stump), Add canonical machine
|
||||
name to capabilities output (Mark McLoughlin), add cd and pwd
|
||||
commands to virsh (Paolo Bonzini), Add checks for some NIC hotplug
|
||||
related features added in qemu-0.10.0 (Mark McLoughlin), Add
|
||||
domain autostart for LXC driver (Daniel P. Berrange), Add domain
|
||||
events support to LXC driver (Daniel P. Berrange), Add interface
|
||||
object list manipulation functions (Laine Stump), Add internal XML
|
||||
parsing/formatting flag (Mark McLoughlin), Add netcf XML schemas
|
||||
and test data (Daniel Veillard), Add new net filesystem glusterfs
|
||||
(Harshavardhana), Add NIC and hostnet names to domain state XML
|
||||
(Mark McLoughlin), Add no_verify query parameter to ESX URIs
|
||||
(Matthias Bolte), Add SCM_RIGHTS support to QEMU monitor code
|
||||
(Mark McLoughlin), Add support for attaching network/bridge NICs
|
||||
in QEMU driver (Mark McLoughlin), add support for netcf XML import
|
||||
and export (Daniel Veillard), Add support for network device detach
|
||||
(Mark McLoughlin), Add support for physical memory access for QEmu
|
||||
(Nguyen Anh Quynh), Add support for VBox 3 and event callbacks on
|
||||
vbox (Pritesh Kothari), Add the monitor type to the domain state
|
||||
XML (Mark McLoughlin), Add virCapsGuestMachine structure (Mark
|
||||
McLoughlin), Add virsh commands for network interface management
|
||||
(Laine Stump), Allow autostart of libvirtd to be disabled with
|
||||
LIBVIRT_AUTOSTART=0 (Daniel P. Berrange), Allow leading dots in VMX
|
||||
config entry names (Matthias Bolte), Assign names to qemu NICs and
|
||||
network backends (Mark McLoughlin), Basic qemu NIC hotplug support
|
||||
(Mark McLoughlin), build: adjust aclocal's search patch to prefer
|
||||
gnulib's m4 files. (Jim Meyering), build: automatically rerun
|
||||
./bootstrap when needed (Jim Meyering), build: make autogen.sh use
|
||||
autoreconf -if (Jim Meyering), build: submodule machinery now works
|
||||
also when no tag is reachable (Jim Meyering), Canonicalize qemu
|
||||
machine types (Mark McLoughlin), Change code generator to give async
|
||||
event messages their own postfix (Daniel P. Berrange), Change the
|
||||
way client event loop watches are managed (Daniel P. Berrange),
|
||||
Decode incoming request header before invoking dispatch code
|
||||
(Daniel P. Berrange), Define an API for registering incoming message
|
||||
dispatch filters (Daniel P. Berrange), ESX driver accept VI API
|
||||
version 4.0 (Matthias Bolte), Fill in vCPU - pCPU current mapping,
|
||||
and vCPU cpuTime for QEMU (Daniel P. Berrange), generate ChangeLog
|
||||
from git logs into distribution tarball (Jim Meyering), Implement
|
||||
qemu dump capabilities (Paolo Bonzini), Implement schedular
|
||||
tunables API using cgroups (Daniel P. Berrange), Implement the
|
||||
new virinterface functions (Laine Stump), Make cgroups a little
|
||||
more efficient (Daniel P. Berrange), Make it easier to debug tests
|
||||
running programs (Daniel P. Berrange), Make qemuBuildHostNetStr()
|
||||
take tapfd as a string (Mark McLoughlin), Make QEMU cgroups use
|
||||
configurable (Daniel P. Berrange), Make qemuCmdFlags available in
|
||||
qemudDomainAttachDevice() (Mark McLoughlin), Move queuing of RPC
|
||||
replies into dispatch code (Daniel P. Berrange), Move vnet_hdr logic
|
||||
into qemudNetworkIfaceConnect() and export it (Mark McLoughlin),
|
||||
Netcf based interface driver implementation (Laine Stump), netcf
|
||||
XML validation and input and output tests (Daniel Veillard), Only
|
||||
probe qemu for machine types when binary changes (Mark McLoughlin),
|
||||
Place every QEMU guest in a private cgroup (Daniel P. Berrange),
|
||||
Probe for QEMU machine types (Mark McLoughlin), Probe QEMU directly
|
||||
for machine aliases if not found in capabilties (Mark McLoughlin),
|
||||
Public API for new virInterface functions (Laine Stump), python:
|
||||
Raise exceptions if virDomain*Stats fail. (Cole Robinson), Refactor
|
||||
cgroups to allow a group per driver to be managed directly (Daniel
|
||||
P. Berrange), Re-factor pci_add reply parsing and parse domain/bus
|
||||
numbers (Mark McLoughlin), Retain disk PCI address across libvirtd
|
||||
restarts (Mark McLoughlin), Retain PCI address from NIC attach
|
||||
(Mark McLoughlin), Run QEMU guests as an unprivileged user (Daniel
|
||||
P. Berrange), Separate code for encoding outgoing remote message
|
||||
headers (Daniel P. Berrange), Split generic RPC message dispatch
|
||||
code out from remote protocol API handlers (Daniel P. Berrange),
|
||||
Split out code for handling incoming method call messages
|
||||
(Daniel P. Berrange), storage: Break out actual raw cloning to
|
||||
separate function. (Cole Robinson), storage: cleanup: do away with
|
||||
'createFile' (Cole Robinson), storage: disk: Use capacity, not
|
||||
allocation, when creating volume. (Cole Robinson), storage: Don't
|
||||
try sparse detection if writing to block device. (Cole Robinson),
|
||||
storage: Implement 'CreateBlockFrom' helper. (Cole Robinson),
|
||||
storage: Implement CreateVolFrom for logical and disk backend. (Cole
|
||||
Robinson), storage: Move most of the FS creation functions to
|
||||
common backend. (Cole Robinson), storage: Refactor FS backend
|
||||
'create' function choosing. (Cole Robinson), Store the interface
|
||||
vlan number in the domain state (Mark McLoughlin), Support video
|
||||
element for QEMU guests (Daniel P. Berrange), Support video tag
|
||||
for defining VGA card properties (Daniel P. Berrange), Switch to
|
||||
using a unix socket for the qemu monitor (Mark McLoughlin), test:
|
||||
Generate net interface names when assigning XML. (Cole Robinson),
|
||||
test: Implement BlockStats and InterfaceStats (Cole Robinson),
|
||||
Use cgroups for block device whitelisting in QEMU guests (Daniel
|
||||
P. Berrange), Use enums for cgroup controller types / labels
|
||||
(Daniel P. Berrange), Use sendmsg() on QEMU monitor socket (Mark
|
||||
McLoughlin), Use virDomainChrTypeFromString() instead of open
|
||||
coding (Mark McLoughlin), Use virFileReadAll/virFileWriteStr for
|
||||
key cgroup read/write helpers (Daniel P. Berrange), virGetinterface
|
||||
matching of MAC and interface name (Laine Stump)
|
||||
- Cleanups: Fix configure checks from previous commits (Daniel
|
||||
P. Berrange), Avoid a warning if compiling without inotify
|
||||
(Daniel P. Berrange), Remove a stray semicolon (Daniel Veillard),
|
||||
Extend the ESX URL to habdle ports and GSX (Matthias Bolte), Fix
|
||||
escaping of 8-bit high characters (Daniel P. Berrange), , Remove
|
||||
ATTRIBUTE_UNUSED from flags to qemudDomainMigratePerform. (Chris
|
||||
Lalancette), Add a comment about setting errors after
|
||||
qemudStartVMDaemon(). (Chris Lalancette), Fix an erroneous
|
||||
debug error to KVM; it should read QEMU/KVM. (Chris Lalancette),
|
||||
Remove a stray semicolon in qemudDomainMigratePrepare2. (Chris
|
||||
Lalancette), Convert a few stray users of free() in libvirt.c
|
||||
to VIR_FREE(). (Chris Lalancette), Use virGetHostname instead
|
||||
of gethostname. (Chris Lalancette), Fix up a minor indentation
|
||||
issue with virDomainMigratePrepare. (Chris Lalancette), Fix up a
|
||||
silly typo in apibuild.py. (Chris Lalancette), Avoid warning when
|
||||
compiling without IFF_VNET_HDR (Maximilian Wilhelm), Capilize
|
||||
libvirt-client summary (Mark McLoughlin), Move ldconfig calls
|
||||
to libvirt-client %post/%postun (Mark McLoughlin), Convert NEWS
|
||||
to UTF-8 (Mark McLoughlin), Fix trailing whitespace in NEWS
|
||||
(Mark McLoughlin), No need to build require both python-devel
|
||||
and python (Mark McLoughlin), Remove executable perms from
|
||||
/etc/sysconfig/libvirtd (Mark McLoughlin), Use a %postun -p for
|
||||
one line scriptlet (Mark McLoughlin), Don't explicitly require
|
||||
libxml2 (Mark McLoughlin), Fix some unowned directories (Mark
|
||||
McLoughlin), Kill qemu BuildRequires (Mark McLoughlin), Enable
|
||||
netcf by default (Mark McLoughlin), Default to with_polkit
|
||||
(Mark McLoughlin), Make vbox support configurable (Mark
|
||||
McLoughlin), Build with --without-capng if capng is disabled
|
||||
(Mark McLoughlin), BuildRequires libcap-ng-devel not capng-devel
|
||||
(Mark McLoughlin), Drop curl host check when using ESX without
|
||||
check (Shahar Klein), Fix typo in xen capabilities code (Daniel
|
||||
P. Berrange), Add bare format string to printf-derivatives troubles
|
||||
(Laine Stump), Add phyp files to POTFILES, to make syntax-check
|
||||
happy. (Cole Robinson), avoid a make distcheck failure: distribute
|
||||
docs/schemas/interface.rng (Jim Meyering), avoid a make distcheck
|
||||
failure: distribute tests/interfaceschemadata/ (Jim Meyering), avoid
|
||||
a "make syntax-check" failure (Jim Meyering), build: do not emit
|
||||
a trailing blank line into VC'd file, NEWS (Jim Meyering), build:
|
||||
update from gnulib, for latest maint.mk (Jim Meyering), Clean up
|
||||
error handling in qemudDomainAttachNetDevice() (Mark McLoughlin),
|
||||
Cleanup qemu binary detection logic in qemudCapsInitGuest() (Mark
|
||||
McLoughlin), Commit newly generated docs, after changes from
|
||||
commit 2348cf. (Cole Robinson), Factor qemuBuildHostNetStr()
|
||||
out from qemuBuildCommandLine() (Mark McLoughlin), Factor
|
||||
qemuBuildNicStr() out from qemuBuildCommandLine() (Mark McLoughlin),
|
||||
Factor qemudMonitorSend() out of qemudMonitorCommandExtra() (Mark
|
||||
McLoughlin), Fix cgroup compile warnings (Daniel P. Berrange),
|
||||
Fix misc build problems due to new drivers (Daniel P. Berrange),
|
||||
Fix wierd build problems due to autopoint overwriting gnulib m4
|
||||
(Daniel P. Berrange), Makefile.cfg: Rename to... (Jim Meyering),
|
||||
make .gnulib a submodule (Jim Meyering), make "make syntax-check"
|
||||
consistent with "git diff --check" (Jim Meyering), Minor qemu
|
||||
monitor coding style fixes (Mark McLoughlin), Prepare to use
|
||||
maint.mk from gnulib (Jim Meyering), Refactor incoming message
|
||||
handling to prepare for data stream support (Daniel P. Berrange),
|
||||
Refactor message sending to allow code reuse for data streams
|
||||
(Daniel P. Berrange), remove all .cvsignore files (Jim Meyering),
|
||||
remove all trailing blank lines (Jim Meyering), Remove some unused
|
||||
variables and cut long lines (Daniel Veillard), Remove trailing
|
||||
blank lines (Daniel Veillard), Rename a bunch of internal methods
|
||||
to clarify their meaning (Daniel P. Berrange), Rename 'direction'
|
||||
to 'type' in remote_message_header (Daniel P. Berrange), Report
|
||||
the object name on lookup error (Daniel Veillard), Simplify remote
|
||||
driver error reporting (Daniel P. Berrange), skip some of gnulib's
|
||||
new rules (Jim Meyering), use automake-1.11's silent-rules
|
||||
option, when possible (Jim Meyering), use gnumakefile and
|
||||
maintainer-makefile modules from gnulib (Jim Meyering)
|
||||
|
||||
|
||||
0.6.5: Jul 3 2009:
|
||||
- New features: create storage columes on disk backend (Henrik Persson),
|
||||
drop of capabilities based on libcap-ng when possible (Daniel
|
||||
Berrange)
|
||||
- Portability: fix build on non-Linux targets (Daniel Berrange)
|
||||
- Documentation: typo and english fixes (Runa Bhattacharjee and
|
||||
Garry Dolley), Docs on extending APIs (Dave Allan), cleanup
|
||||
of debug and logging documentation (Amy Griffis), add
|
||||
HACKING doc to the website (Daniel Berrange),
|
||||
documentation for OpenNebula driver (Abel Miguez Rodriguez)
|
||||
- Bug fixes: forbid autostart on transcient networks,
|
||||
xen device removal crash (Daniel Berrange), re-detection of
|
||||
transient VMs after libvirtd restart(Daniel Berrange),
|
||||
bug in virFindFileInPath (Daniel Berrange), handle new
|
||||
availheap sysctl in Xen (Daniel Berrange), allow USB hostdev
|
||||
product 0 (Cole Robinson), cleanup when creating a storage pool
|
||||
fails (Henrik Persson), domain id fix on redefinition in
|
||||
test driver (Cole Robinson), fix raw storage allocation (Cole
|
||||
Robinson), memory reporting for inactive qemu drivers (Cole
|
||||
Robinson), segfault if storage pool has no type attribute (Cole
|
||||
Robinson), OpenNebula compilation issues (Javier Fontan),
|
||||
dominfo command without security driver (Daniel Berrange),
|
||||
domain state problems after migration or destroy (Federico
|
||||
Simoncelli), leak in node device parsing (Dave Allan),
|
||||
storage pool definitions reading at startup (Cole Robinson),
|
||||
bogus WWN in NPIV support (David Allan), avoid a segfault with
|
||||
recent Xen (Sascha), cope with libnuma failures on weird
|
||||
topologies (Dan Berrange), crash in QEMU driver with bad capabilities
|
||||
data (Dan Berrange), trying to re-create a pool should not destroy
|
||||
it (Dave Allan), endless loop in node device XML dump (Cole Robinson),
|
||||
Re-label shared and readonly images (Dan Berrange)
|
||||
- Improvements: create and destroy NPIV support (David Allan),
|
||||
networking in UML driver (Daniel Berrange), HAL driver restart
|
||||
thread safety (Daniel Berrange), capabilities and nodeinfo
|
||||
APIs for LXC (Daniel Berrange), iNUMA API for VBox (Daniel Berrange),
|
||||
dynamically search and use kvm-img qemu-img or qcow-create (Doug
|
||||
Goldstein), fix qemu and kvm version parsing (Mark McLoughlin),
|
||||
serial number for HAL storage (Dave Allan), improve error reporting
|
||||
for virConnectOpen URIs (Daniel Berrange), include OS driver name
|
||||
in device XML (Daniel Berrange), fix qemu command flags fetching
|
||||
(Cole Robinson), check that qemu support -drive format= (Cole
|
||||
Robinson), improve emulator detection (Cole Robinson), changes
|
||||
to config parser to accomodate VMX syntax (Matthias Bolte),
|
||||
update network schemas and driver for missing elements (Satoru SATOH),
|
||||
avoid changing file context if not needed (Tim Waugh),
|
||||
skip labelling if no src path (Cole Robinson), add arm emulation
|
||||
if qemu-system-arm is present (C.J. Adams-Collier)
|
||||
- Cleanups: daemon check logging env variables (Daniel Berrange),
|
||||
User Mode Linux start and stop cleanups (Daniel Berrange),
|
||||
share the NUMA api implementations (Daniel Berrange), storage
|
||||
module dependancies (Dave Allan), refactor storage XML parsing
|
||||
(Cole Robinson), big cleanup of logging code (Amy Griffis),
|
||||
superfluous % on format (Matthias Bolte), cleanups and updates
|
||||
on OpenNebula driver (Daniel Berrange and Abel Miguez Rodriguez)
|
||||
|
||||
|
||||
0.6.4: May 29 2009:
|
||||
- New features: new API virStorageVolCreateXMLFrom (Cole Robinson),
|
||||
full VBox graphic capabilities (Pritesh Kothari), Interface config
|
||||
@ -81,7 +621,7 @@
|
||||
- Improvements: add SCSI storage rescan (David Allan), rootless
|
||||
LXC containers support improvements (Serge Hallyn), getHostname
|
||||
support for LXC (Dan Smith), cleanup and logging output of some
|
||||
domain functions (Guido G<EFBFBD>nther), drop pool lock when allocating
|
||||
domain functions (Guido Günther), drop pool lock when allocating
|
||||
volumes (Cole Robinson), LXC handle kernel without CLONE_NEWUSER
|
||||
support (Serge Hallyn), cpu pinning on defined Xen domains (Takahashi
|
||||
Tomohiro), dynamic bridge names support (Soren Hansen), LXC use
|
||||
@ -89,7 +629,7 @@
|
||||
virNodeDeviceCreateXML and virNodeDeviceDestroy entry points
|
||||
(Dave Allan)
|
||||
- Cleanups: don't hardcode getgrnam_r buffer to 1024 bytes (Guido
|
||||
G<EFBFBD>nther), qemudBuildCommandLine API cleanup (Daniel Berrange),
|
||||
Günther), qemudBuildCommandLine API cleanup (Daniel Berrange),
|
||||
|
||||
|
||||
|
||||
@ -158,15 +698,15 @@
|
||||
to avoid crashes (Daniel Berrange), mark defined network descriptions
|
||||
as persistent (Cole Robinson), qemu+tls handshake negotiation hang
|
||||
(Chris Lalancette)
|
||||
- Improvements: don't hardcode ssh port (Guido G<EFBFBD>nther), new test
|
||||
- Improvements: don't hardcode ssh port (Guido Günther), new test
|
||||
cases and testing infrastructure (Jim Meyering), improve the
|
||||
SExpr parser (John Levon), proper error reporting on xend
|
||||
shutdown command (John Levon), proper handling of errors when
|
||||
saving QEmu domains state (Guido G<EFBFBD>nther), revamp of the internal
|
||||
saving QEmu domains state (Guido Günther), revamp of the internal
|
||||
error memory APIs (John Levon), better virsh error reporting (John
|
||||
Levon), more daemon options to allow running multiple daemons (Jim
|
||||
Meyering), error handling when creating a QEmu domain (Guido G<EFBFBD>nther),
|
||||
fix timeouts in QEmu log reading (Guido G<EFBFBD>nther), migration with
|
||||
Meyering), error handling when creating a QEmu domain (Guido Günther),
|
||||
fix timeouts in QEmu log reading (Guido Günther), migration with
|
||||
xend 3.3 fixes (John Levon), virsh XML dump flags cleanup (Cole
|
||||
Robinson), fix build with loadable drivers (Maximilian Wilhelm),
|
||||
internal XML APIs to read long long and hexa values (Mark
|
||||
@ -180,7 +720,7 @@
|
||||
(Jim Meyering), many error handling cleanups (Jim Meyering), XML
|
||||
module cleanups (Mark McLoughlin), compiler warning (Maximilian
|
||||
Wilhelm), daemon TCP listen cleanup (Cole Robinson), size_t type
|
||||
cleanup (Guido G<EFBFBD>nther), parallel make fix (Michael Marineau),
|
||||
cleanup (Guido Günther), parallel make fix (Michael Marineau),
|
||||
storage error diagnostic fix (Ryota Ozaki), remove redundant monitor
|
||||
watch variable (Cole Robinson), qemu AttachDevice error report
|
||||
improvement (Cole Robinson), virsh output cleanup (Jim Meyering),
|
||||
@ -192,7 +732,7 @@
|
||||
0.6.0: Jan 31 2009:
|
||||
- New features: thread safety of the API and event handling (Daniel
|
||||
Berrange), allow QEmu domains to survive daemon restart (Guido
|
||||
G<EFBFBD>nther), extended logging capabilities, support copy-on-write
|
||||
Günther), extended logging capabilities, support copy-on-write
|
||||
storage volumes (Daniel Berrange), support of storage cache
|
||||
control options for QEmu/KVM (Daniel Berrange)
|
||||
- Portability: fix old DBus API problem, Debian portability fix
|
||||
@ -204,13 +744,13 @@
|
||||
solaris Xen fixes (John Levon), RPC portability to Solaris (Daniel
|
||||
Berrange)
|
||||
- Documentation: typo fixes (Richard Jones), logging support,
|
||||
vnc keymap attributes (Guido G<EFBFBD>nther), HACKING file updates
|
||||
vnc keymap attributes (Guido Günther), HACKING file updates
|
||||
(Jim Meyering), new PCI passthrough format, libvirt-qpid and
|
||||
UML driver documentation (Daniel Berrange), provide RNG schemas
|
||||
for all XML formats used in libvirt APIs (Daniel Berrange),
|
||||
- Bug fixes: segfault on virtual network without bridge name (Cole
|
||||
Robinson), various locking fixes (Cole Robinson), fix serial
|
||||
and parallel devices on tcp/unix/telnet (Guido G<EFBFBD>nther), leak
|
||||
and parallel devices on tcp/unix/telnet (Guido Günther), leak
|
||||
in daemon (Jim Meyering), storage driver segfault (Miloslav TrmaC),
|
||||
missing check in read-only connections (Daniel Berrange),
|
||||
OpenVZ crash and mutex fixes (Anton Protopopov), couple of
|
||||
@ -226,15 +766,15 @@
|
||||
- Improvements: driver infrastructure and locking (Daniel Berrange),
|
||||
Test driver infrastructure (Daniel Berrange), parallelism in the
|
||||
daemon and associated config (Daniel Berrange), virsh help cleanups
|
||||
(Jim Meyering), logrotate daemon logs (Guido G<EFBFBD>nther), more
|
||||
(Jim Meyering), logrotate daemon logs (Guido Günther), more
|
||||
regression tests (Jim Meyering), QEmu SDL graphics (Itamar Heim),
|
||||
add --version flag to daemon (Dave Allan), memory consumption
|
||||
cleanup (Dave Allan), QEmu pid file and XML states for daemon
|
||||
restart (Guido G<EFBFBD>nther), gnulib updates (Jim Meyering and
|
||||
restart (Guido Günther), gnulib updates (Jim Meyering and
|
||||
Dan Berrange), PCI passthrough for KVM (Jason Krieg), generic
|
||||
internal thread API (Daniel Berrange), RHEL-5 specific Xen
|
||||
configure option and code (Markus Armbruster), save domain
|
||||
state as string in status file (Guido G<EFBFBD>nther), add locking
|
||||
state as string in status file (Guido Günther), add locking
|
||||
to all API entry points (Daniel Berrange), new ref counting APIs
|
||||
(Daniel Berrange), IP address for Xen bridges (John Levon),
|
||||
driver format for disk file types (Daniel Berrange), improve
|
||||
@ -247,15 +787,15 @@
|
||||
(Jim Meyering), gethostby* cleanup and test (Jim Meyering), some
|
||||
code fixes (Dave Allan), various code cleanup (Jim Meyering),
|
||||
virsh argument handling cleanup (Jim Meyering), virAsprintf
|
||||
cleanup replacement (Guido G<EFBFBD>nther), QEmu monitor reads (Cole
|
||||
Robinson), Makefile cleanups (Guido G<EFBFBD>nther), Xen code cleanups
|
||||
cleanup replacement (Guido Günther), QEmu monitor reads (Cole
|
||||
Robinson), Makefile cleanups (Guido Günther), Xen code cleanups
|
||||
(John Levon), revamp of ELF export scripts (John Levon), domain
|
||||
event callback args (John Levon), enforce use of pid_t (John Levon),
|
||||
virsh pool-*-as XML code merge (Cole Robinson), xgettext warnings
|
||||
(Jim Meyering), add virKillProcess (Guido G<EFBFBD>nther), add
|
||||
(Jim Meyering), add virKillProcess (Guido Günther), add
|
||||
virGetHostname (David Lutterkort), add flags argument to the full
|
||||
XML parsing stack (Guido G<EFBFBD>nther), various daemon code cleanups
|
||||
(Guido G<EFBFBD>nther), handling of daemon missing config file (Jim
|
||||
XML parsing stack (Guido Günther), various daemon code cleanups
|
||||
(Guido Günther), handling of daemon missing config file (Jim
|
||||
Meyering), rpcgen invocation cleanup (Richard Jones), devhelp
|
||||
builkd makefile cleanups (John Levon), update error handling for
|
||||
threading (Daniel Berrange), remove all non-rentrant POSIX calls
|
||||
@ -275,7 +815,7 @@
|
||||
- Bug fixes: add a delay in storage backend for disks to show up
|
||||
(Chris Lalancette), fix parsing for CDRom device with no source
|
||||
(Daniel Berrange), use xenstore to list domains to avoid some
|
||||
bugs (Guido G<EFBFBD>nther), remove a leak in xen inotify code (Daniel
|
||||
bugs (Guido Günther), remove a leak in xen inotify code (Daniel
|
||||
Berrange), UML driver freeing of uninitialialized variable (Ron
|
||||
Yorston), fix UML inotify code (Daniel Berrange), crash when
|
||||
adding storage without a format (Cole Robinson)
|
||||
@ -283,8 +823,8 @@
|
||||
max memory (Jim Fehlig), allow remote://hostname/ URI for automatic
|
||||
probe of hypervisors (Daniel Berrange), fix daemon configuration
|
||||
regression testing (Jim Meyering ), check /usr/bin/kvm for QEmu
|
||||
driver init (Guido G<EFBFBD>nther), proper active vs. inactive
|
||||
differentiation (Guido G<EFBFBD>nther), improve MTU setting on tap
|
||||
driver init (Guido Günther), proper active vs. inactive
|
||||
differentiation (Guido Günther), improve MTU setting on tap
|
||||
interfaces (Eduardo Habkost), increase timeout for initial QEmu
|
||||
monitor poll (Cole Robinson)
|
||||
- Cleanups:fix improper initialisations (Jim Meyering)
|
||||
@ -294,9 +834,9 @@
|
||||
- New features: CPU and scheduler support for LXC (Dan Smith), SDL display configuration (Daniel Berrange), domain lifecycle event support for QEmu and Xen with python bindings (Ben Guthro and Daniel Berrange), KVM/QEmu migration support (Rich Jones and Chris Lalancette), User Mode Linux driver (Daniel Berrange), API for node device enumeration using HAL and DeviceKit with python bindings (David Lively),
|
||||
- Portability: RHEL build fixes, VPATH build (Guido Gunther), many MinGW related cleanups and fixes (Richard Jones), compilation without libvirtd (Richard Jones), Add a Windows icon (Richard Jones), sys/poll.h portability fixes (Daniel Berrange), gnulib and mingw cleanups (Jim Meyering),
|
||||
- Documentation: virsh man page cleanups (Mark McLoughlin), doc for NIC model selection (Richard Jones), monitoring section, link to AMQP bindings, inew APIs, UML driver docs (Daniel Berrange),
|
||||
- Bug fixes: Xen interfaces ordering (Jim Fehlig), startup timeout with multiple pty (Cole Robinson), segfault if QEmu without active virtual network (Cole Robinson), qemu small leak (Eduardo Habkost), index creation for more than 26 disks (Sanjay Rao and Chris Wright), virRealloc handling of 0 (Daniel Berrange), missing pointer initialization (Chris Lalancette), bus device index bug (Guido G<EFBFBD>nther), avoid crash in some error patch (Chris Lalancette), fix a problem in storage back-end (Chris Lalancette), minimum domain memory size check for Xen (Shigeki Sakamoto), switch off QEmu cache if device is shared (Charles Duffy), logical volume definition before scan bug (Chris Lalancette), a couple of memory leaks on QEmu vnc (Jim Meyering), lvs parsing fixes (Cole Robinson),
|
||||
- Improvements: LXC resources control and internal cgroup API (Dan Smith), virDomainCreateLinux renamed virDomainDefineXML, network driver modularization (Daniel Berrange), change the way domain and net are reported in errors (Jim Meyering), partition table scan on iSCSI (Chris Lalancette), qemudDiskDeviceName to handle normal disks (Guido G<EFBFBD>nther), qemudDomainBlockStats improvement (Guido G<EFBFBD>nther), scsi/virtio hotplug support for KVM (Guido G<EFBFBD>nther), USB hot addition in QEmu (Guido G<EFBFBD>nther), logical pool and storage backend XML dump improvement (Chris Lalancette), MAC addresses prefix per driver (Daniel Berrange), OpenVZ getVersion support (Daniel Berrange), hot removal of scsi/virtio disks for KVM (Guido G<EFBFBD>nther), test storage driver (Cole Robinson), iSCSI and disk storage driver improvement on path handling (Chris Lalancette), UUID and ID support for Xenner (Daniel Berrange), better logging when when executing commands (Cole Robinson), bridged network for OpenVZ (Daniel Berrange), OpenVZ config file params (Evgeniy Sokolov), allow to build drivers as libtool convenience libs (Daniel Berrange), fully versioned linker script for exported ABI (Daniel Berrange), Push URI probing down into drivers open (Daniel Berrange), move all stateful drivers into the daemon binary (Daniel Berrange), improve domain event with a detail field (Daniel Berrange), domain events for QEMU driver (Daniel Berrange), event unregister callback crash (David Lively), plug a few leaks (Daniel Berrange), internal APIs for handling node device XML config (David Lively), tweaks to node device implementation (Daniel Berrange), OpenVZ vCPUs values init (Evgeniy Sokolov)
|
||||
- Cleanups: C99 initializers (Guido Gunther), test output (Cole Robinson), debug macro centralization (Cole Robinson), various error handling (Guido G<EFBFBD>nther), safewrite use cleanup (Jim Meyering), centralize error reporting logic (Cole Robinson), avoid printf warnings (Daniel Berrange), use arrays instead of list for internal APIs (Daniel Berrange), remove many format string warnings Jim Meyering), avoid syntax check warnings (Chris Lalancette), improve po-check and list generation (Jim Meyering), .gitignore generation and handling (Jim Meyering), use ARRAY_CARDINALITY (Jim Meyering), gnulib updates and switch to use netdb.h (Jim Meyering), drop usage of socket_errno (Jim Meyering), remove socketcompat.h (Jim Meyering), more tests (Jim Meyering), drop virStringList (Daniel Berrange), reformatting and isolation of the error APIs (Daniel Berrange), cleanup internal.h and move internal APIs in specific headers (Daniel Berrange), move domain events helpers into domain_events.c (Daniel Berrange), cleanup the way optional modules are compiled (Daniel Berrange), add new logging module, optional dlopen of drivers (Daniel Berrange), various new tests (Jim Meyering), cleanups when Xen is not configured in (Daniel Berrange), add some missing functions comments (Jim Meyering),
|
||||
- Bug fixes: Xen interfaces ordering (Jim Fehlig), startup timeout with multiple pty (Cole Robinson), segfault if QEmu without active virtual network (Cole Robinson), qemu small leak (Eduardo Habkost), index creation for more than 26 disks (Sanjay Rao and Chris Wright), virRealloc handling of 0 (Daniel Berrange), missing pointer initialization (Chris Lalancette), bus device index bug (Guido Günther), avoid crash in some error patch (Chris Lalancette), fix a problem in storage back-end (Chris Lalancette), minimum domain memory size check for Xen (Shigeki Sakamoto), switch off QEmu cache if device is shared (Charles Duffy), logical volume definition before scan bug (Chris Lalancette), a couple of memory leaks on QEmu vnc (Jim Meyering), lvs parsing fixes (Cole Robinson),
|
||||
- Improvements: LXC resources control and internal cgroup API (Dan Smith), virDomainCreateLinux renamed virDomainDefineXML, network driver modularization (Daniel Berrange), change the way domain and net are reported in errors (Jim Meyering), partition table scan on iSCSI (Chris Lalancette), qemudDiskDeviceName to handle normal disks (Guido Günther), qemudDomainBlockStats improvement (Guido Günther), scsi/virtio hotplug support for KVM (Guido Günther), USB hot addition in QEmu (Guido Günther), logical pool and storage backend XML dump improvement (Chris Lalancette), MAC addresses prefix per driver (Daniel Berrange), OpenVZ getVersion support (Daniel Berrange), hot removal of scsi/virtio disks for KVM (Guido Günther), test storage driver (Cole Robinson), iSCSI and disk storage driver improvement on path handling (Chris Lalancette), UUID and ID support for Xenner (Daniel Berrange), better logging when when executing commands (Cole Robinson), bridged network for OpenVZ (Daniel Berrange), OpenVZ config file params (Evgeniy Sokolov), allow to build drivers as libtool convenience libs (Daniel Berrange), fully versioned linker script for exported ABI (Daniel Berrange), Push URI probing down into drivers open (Daniel Berrange), move all stateful drivers into the daemon binary (Daniel Berrange), improve domain event with a detail field (Daniel Berrange), domain events for QEMU driver (Daniel Berrange), event unregister callback crash (David Lively), plug a few leaks (Daniel Berrange), internal APIs for handling node device XML config (David Lively), tweaks to node device implementation (Daniel Berrange), OpenVZ vCPUs values init (Evgeniy Sokolov)
|
||||
- Cleanups: C99 initializers (Guido Gunther), test output (Cole Robinson), debug macro centralization (Cole Robinson), various error handling (Guido Günther), safewrite use cleanup (Jim Meyering), centralize error reporting logic (Cole Robinson), avoid printf warnings (Daniel Berrange), use arrays instead of list for internal APIs (Daniel Berrange), remove many format string warnings Jim Meyering), avoid syntax check warnings (Chris Lalancette), improve po-check and list generation (Jim Meyering), .gitignore generation and handling (Jim Meyering), use ARRAY_CARDINALITY (Jim Meyering), gnulib updates and switch to use netdb.h (Jim Meyering), drop usage of socket_errno (Jim Meyering), remove socketcompat.h (Jim Meyering), more tests (Jim Meyering), drop virStringList (Daniel Berrange), reformatting and isolation of the error APIs (Daniel Berrange), cleanup internal.h and move internal APIs in specific headers (Daniel Berrange), move domain events helpers into domain_events.c (Daniel Berrange), cleanup the way optional modules are compiled (Daniel Berrange), add new logging module, optional dlopen of drivers (Daniel Berrange), various new tests (Jim Meyering), cleanups when Xen is not configured in (Daniel Berrange), add some missing functions comments (Jim Meyering),
|
||||
|
||||
|
||||
0.4.6: Sep 23 2008:
|
||||
@ -308,7 +848,7 @@
|
||||
OpenVZ (Evgeniy Sokolov), fix parsing of pool without a source
|
||||
(Chris Lalancette and Daniel Berrange)
|
||||
- Improvements: add storage disk volume delete (Cole Robinson),
|
||||
KVM dynamic max CPU detection (Guido G<EFBFBD>nther), spec file improvement
|
||||
KVM dynamic max CPU detection (Guido Günther), spec file improvement
|
||||
for minimal builds (Ben Guthro), improved error message in XM
|
||||
configuration module (Richard Jones), network config in OpenVZ
|
||||
support (Evgeniy Sokolov), enable stopping a pool in logical
|
||||
@ -323,7 +863,7 @@
|
||||
unified XML domain and network parsing for all drivers (Daniel
|
||||
Berrange), OpenVZ features improvements (Evgeniy Sokolov),
|
||||
OpenVZ and Linux containers support now default, USB device
|
||||
passthrough for QEmu/KVM (Guido G<EFBFBD>nther), storage pool source
|
||||
passthrough for QEmu/KVM (Guido Günther), storage pool source
|
||||
discovery (David Lively)
|
||||
- Portability: fixes for MinGW (Atsushi SAKAI and Daniel Berrange),
|
||||
detection of xen lib improvement (David Lively),
|
||||
@ -333,9 +873,9 @@
|
||||
SAKAI and Daniel Berrange), HTML generation fix, -lpthread explicit
|
||||
linking when needed (Jim Meyering)
|
||||
- Documentation: various typo fixes (Anton Protopopov, Toth
|
||||
Istv<EFBFBD>n, Atsushi SAKAI, Nguyen Anh Quynh),
|
||||
István, Atsushi SAKAI, Nguyen Anh Quynh),
|
||||
Java bindings docs, remove Xen centric
|
||||
comments (Guido G<EFBFBD>nther), various typo in comments (Chris
|
||||
comments (Guido Günther), various typo in comments (Chris
|
||||
Lalancette), docs and API comments fixes (Charles Duffy),
|
||||
how to contribute to open source link (Richard Jones),
|
||||
memory unit fixups (matthew chan)
|
||||
@ -345,14 +885,14 @@
|
||||
in QEmu/KVM (Daniel Berrange), fix OpenVZ probe function (Evgeniy
|
||||
Sokolov), ID related lookup fixes in OpenVZ (Evgeniy Sokolov),
|
||||
pool cration for netfs (Cole Robinson), check for migrate support
|
||||
with QEmu (Guido G<EFBFBD>nther), check against double create with QEmu
|
||||
(Guido G<EFBFBD>nther), broken open failure detection in QEmu (Guido
|
||||
G<EFBFBD>nther), UUID string conversions in QEmu (Guido G<EFBFBD>nther),
|
||||
with QEmu (Guido Günther), check against double create with QEmu
|
||||
(Guido Günther), broken open failure detection in QEmu (Guido
|
||||
Günther), UUID string conversions in QEmu (Guido Günther),
|
||||
various small cleanup and bug fixes (Daniel Berrange), ID
|
||||
related fixes in the test driver (Daniel Berrange), better error
|
||||
reporting on XML parsing (Daniel Berrange), empty CD-ROM source
|
||||
device section (Chris Lalancette), avoid crashes for interface
|
||||
without a name in QEmu (Guido G<EFBFBD>nther), provide the real
|
||||
without a name in QEmu (Guido Günther), provide the real
|
||||
vncport (Charles Duffy), fix forward delay (Daniel Berrange),
|
||||
new VM state is initialized to be SHUTOFF (Daniel Berrange),
|
||||
virsh attach-disk bug fixes (Chris Lalancette), veth clash
|
||||
@ -384,7 +924,7 @@
|
||||
(Daniel Berrange), virsh "edit" command (Richard Jones), save
|
||||
UUID of OpenVZ domains (Evgeniy Sokolov), improve xen blocks
|
||||
statistics (Chris Lalancette), gnulib updates (Jim Meyering),
|
||||
allow to add disk as USB devices (Guido G<EFBFBD>nther), LXC container
|
||||
allow to add disk as USB devices (Guido Günther), LXC container
|
||||
process should survive libvirtd restarts (Daniel Berrange), allow
|
||||
to define static host domain configs, number of CPU used by
|
||||
OpenVZ domains (Evgeniy Sokolov), private root fs for LXC (Daniel
|
||||
@ -516,9 +1056,9 @@
|
||||
driver (Cole Robinson), xen and hvm added to test driver capabilities
|
||||
(Cole Robinson)
|
||||
- Code cleanup: remove unused getopt header (Jim Meyering), mark more
|
||||
strings as translatable (Guido G<EFBFBD>nther and Jim Meyering), convert
|
||||
strings as translatable (Guido Günther and Jim Meyering), convert
|
||||
error strings to something meaningful and translatable (Jim Meyering),
|
||||
Linux Containers code cleanup, last error initializer (Guido G<EFBFBD>nther)
|
||||
Linux Containers code cleanup, last error initializer (Guido Günther)
|
||||
|
||||
|
||||
0.4.1: Mar 3 2008:
|
||||
@ -1078,4 +1618,3 @@
|
||||
- First release
|
||||
- Basic management of existing Xen domains
|
||||
- Minimal autogenerated Python bindings
|
||||
|
||||
|
52
README-hacking
Normal file
52
README-hacking
Normal file
@ -0,0 +1,52 @@
|
||||
-*- outline -*-
|
||||
|
||||
These notes intend to help people working on the checked-out sources.
|
||||
These requirements do not apply when building from a distribution tarball.
|
||||
See also HACKING for more detailed libvirt contribution guidelines.
|
||||
|
||||
* Requirements
|
||||
|
||||
We've opted to keep only the highest-level sources in the GIT repository.
|
||||
This eases our maintenance burden, (fewer merges etc.), but imposes more
|
||||
requirements on anyone wishing to build from the just-checked-out sources.
|
||||
Note the requirements to build the released archive are much less and
|
||||
are just the requirements of the standard ./configure && make procedure.
|
||||
Specific development tools and versions will be checked for and listed by
|
||||
the bootstrap script. See README-prereq for specific notes on obtaining
|
||||
these prerequisite tools.
|
||||
|
||||
Valgrind <http://valgrind.org/> is also highly recommended, if
|
||||
Valgrind supports your architecture. See also README-valgrind.
|
||||
|
||||
While building from a just-cloned source tree may require installing a
|
||||
few prerequisites, later, a plain `git pull && make' should be sufficient.
|
||||
|
||||
* First GIT checkout
|
||||
|
||||
You can get a copy of the source repository like this:
|
||||
|
||||
$ git clone git://libvirt.org/libvirt
|
||||
$ cd libvirt
|
||||
|
||||
The next step is to get all required pieces from gnulib,
|
||||
to run autoreconf, and to invoke ./configure:
|
||||
|
||||
$ ./autogen.sh
|
||||
|
||||
And there you are! Just
|
||||
|
||||
$ make
|
||||
$ make check
|
||||
|
||||
At this point, there should be no difference between your local copy,
|
||||
and the GIT master copy:
|
||||
|
||||
$ git diff
|
||||
|
||||
should output no difference.
|
||||
|
||||
Enjoy!
|
||||
|
||||
Local Variables:
|
||||
indent-tabs-mode: nil
|
||||
End:
|
@ -107,4 +107,3 @@ if test -n "$PKG_CONFIG"; then
|
||||
fi
|
||||
fi[]dnl
|
||||
])])
|
||||
|
||||
|
@ -76,6 +76,9 @@ if [ -x /usr/bin/i686-pc-mingw32-gcc ]; then
|
||||
--without-uml \
|
||||
--without-vbox \
|
||||
--without-openvz \
|
||||
--without-one \
|
||||
--without-phyp \
|
||||
--without-netcf \
|
||||
--without-libvirtd
|
||||
|
||||
make
|
||||
|
22
autogen.sh
22
autogen.sh
@ -54,13 +54,21 @@ if test -z "$*"; then
|
||||
echo "to pass any to it, please specify them on the $0 command line."
|
||||
fi
|
||||
|
||||
autopoint --force
|
||||
#rm -rf m4
|
||||
libtoolize --copy --force
|
||||
aclocal -I m4 -I gnulib/m4
|
||||
autoheader
|
||||
automake --add-missing
|
||||
autoconf
|
||||
# Ensure that whenever we pull in a gnulib update or otherwise change to a
|
||||
# different version (i.e., when switching branches), we also rerun ./bootstrap.
|
||||
curr_status=.git-module-status
|
||||
t=$(git submodule status)
|
||||
if test "$t" = "$(cat $curr_status 2>/dev/null)"; then
|
||||
: # good, it's up to date
|
||||
else
|
||||
echo running bootstrap...
|
||||
./bootstrap && echo "$t" > $curr_status
|
||||
fi
|
||||
|
||||
# Automake requires that ChangeLog exist.
|
||||
touch ChangeLog
|
||||
|
||||
autoreconf -if
|
||||
|
||||
cd $THEDIR
|
||||
|
||||
|
60
bootstrap
60
bootstrap
@ -1,11 +1,5 @@
|
||||
#!/bin/sh
|
||||
# Run this after autogen.sh, to pull in all of the gnulib-related bits.
|
||||
# It's important to run *after* autogen.sh, since it updates some of
|
||||
# the same files autogen.sh does, yet those from gnulib are newer,
|
||||
# and match the tests. So if a gnulib bug has been fixed since the
|
||||
# snapshot taken for whatever gettext release you're using, yet you
|
||||
# run "make check" against the wrong version, the corresponding unit
|
||||
# test in gl-tests/ may well fail.
|
||||
# Run this before autogen.sh, to pull in all of the gnulib-related bits.
|
||||
|
||||
usage() {
|
||||
echo >&2 "\
|
||||
@ -40,31 +34,38 @@ do
|
||||
esac
|
||||
done
|
||||
|
||||
cleanup_gnulib() {
|
||||
st=$?
|
||||
rm -fr .gnulib
|
||||
exit $st
|
||||
}
|
||||
# Get gnulib files.
|
||||
|
||||
case ${GNULIB_SRCDIR--} in
|
||||
-)
|
||||
if [ ! -d .gnulib ]; then
|
||||
echo "$0: getting gnulib files..."
|
||||
|
||||
trap cleanup_gnulib 1 2 13 15
|
||||
|
||||
git clone --depth 1 git://git.sv.gnu.org/gnulib .gnulib ||
|
||||
cleanup_gnulib
|
||||
|
||||
trap - 1 2 13 15
|
||||
fi
|
||||
echo "$0: getting gnulib files..."
|
||||
git submodule init || exit $?
|
||||
git submodule update || exit $?
|
||||
GNULIB_SRCDIR=.gnulib
|
||||
;;
|
||||
*)
|
||||
# Redirect the gnulib submodule to the directory on the command line
|
||||
# if possible.
|
||||
if test -d "$GNULIB_SRCDIR"/.git && \
|
||||
git config --file .gitmodules submodule.gnulib.url >/dev/null; then
|
||||
git submodule init
|
||||
GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd`
|
||||
git config --replace-all submodule.gnulib.url $GNULIB_SRCDIR
|
||||
echo "$0: getting gnulib files..."
|
||||
git submodule update || exit $?
|
||||
GNULIB_SRCDIR=.gnulib
|
||||
else
|
||||
echo >&2 "$0: invalid gnulib srcdir: $GNULIB_SRCDIR"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
|
||||
<$gnulib_tool || exit
|
||||
|
||||
modules='
|
||||
base64
|
||||
c-ctype
|
||||
close
|
||||
connect
|
||||
@ -72,8 +73,11 @@ getaddrinfo
|
||||
gethostname
|
||||
getpass
|
||||
gettext
|
||||
gitlog-to-changelog
|
||||
gnumakefile
|
||||
inet_pton
|
||||
ioctl
|
||||
maintainer-makefile
|
||||
mkstemp
|
||||
mktempd
|
||||
perror
|
||||
@ -86,6 +90,7 @@ send
|
||||
setsockopt
|
||||
socket
|
||||
stpcpy
|
||||
strchrnul
|
||||
strndup
|
||||
strerror
|
||||
strsep
|
||||
@ -103,20 +108,9 @@ vc-list-files
|
||||
# put *.[ch] files in new gnulib/lib/ dir.
|
||||
|
||||
$gnulib_tool \
|
||||
--no-vc-files \
|
||||
--lgpl=2 \
|
||||
--with-tests \
|
||||
--m4-base=gnulib/m4 \
|
||||
--source-base=gnulib/lib \
|
||||
--tests-base=gnulib/tests \
|
||||
--import $modules
|
||||
|
||||
rm -f \
|
||||
.gitignore \
|
||||
gnulib/lib/.gitignore \
|
||||
gnulib/m4/.gitignore \
|
||||
gnulib/tests/.gitignore
|
||||
|
||||
(cd gnulib/lib &&
|
||||
(cat .cvsignore; \
|
||||
ls -1 *.in.h|sed 's/\.in\.h/.h/') | sort -u > .t; mv .t .cvsignore)
|
||||
|
@ -1,10 +0,0 @@
|
||||
compile
|
||||
config.guess
|
||||
config.rpath
|
||||
config.sub
|
||||
depcomp
|
||||
install-sh
|
||||
ltmain.sh
|
||||
missing
|
||||
mkinstalldirs
|
||||
mktempd
|
3
build-aux/.gitignore
vendored
3
build-aux/.gitignore
vendored
@ -8,3 +8,6 @@ ltmain.sh
|
||||
missing
|
||||
mkinstalldirs
|
||||
mktempd
|
||||
/useless-if-before-free
|
||||
/vc-list-files
|
||||
/gitlog-to-changelog
|
||||
|
@ -1,180 +0,0 @@
|
||||
#!/usr/bin/perl -T
|
||||
# Detect instances of "if (p) free (p);".
|
||||
# Likewise for "if (p != NULL) free (p);". And with braces.
|
||||
|
||||
my $VERSION = '2008-05-25 17:36'; # UTC
|
||||
# The definition above must lie within the first 8 lines in order
|
||||
# for the Emacs time-stamp write hook (at end) to update it.
|
||||
# If you change this file with Emacs, please let the write hook
|
||||
# do its job. Otherwise, update this string manually.
|
||||
|
||||
# Copyright (C) 2008 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
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program 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 General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Written by Jim Meyering
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Getopt::Long;
|
||||
|
||||
(my $ME = $0) =~ s|.*/||;
|
||||
|
||||
# use File::Coda; # http://meyering.net/code/Coda/
|
||||
END {
|
||||
defined fileno STDOUT or return;
|
||||
close STDOUT and return;
|
||||
warn "$ME: failed to close standard output: $!\n";
|
||||
$? ||= 1;
|
||||
}
|
||||
|
||||
sub usage ($)
|
||||
{
|
||||
my ($exit_code) = @_;
|
||||
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
||||
if ($exit_code != 0)
|
||||
{
|
||||
print $STREAM "Try `$ME --help' for more information.\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print $STREAM <<EOF;
|
||||
Usage: $ME [OPTIONS] FILE...
|
||||
|
||||
Detect any instance in FILE of a useless "if" test before a free call, e.g.,
|
||||
"if (p) free (p);". Any such test may be safely removed without affecting
|
||||
the semantics of the C code in FILE. Use --name=FOO --name=BAR to also
|
||||
detect free-like functions named FOO and BAR.
|
||||
|
||||
OPTIONS:
|
||||
|
||||
--list print only the name of each matching FILE (\0-terminated)
|
||||
--name=N add name N to the list of `free'-like functions to detect;
|
||||
may be repeated
|
||||
|
||||
--help display this help and exit
|
||||
--version output version information and exit
|
||||
|
||||
Exit status:
|
||||
|
||||
0 one or more matches
|
||||
1 no match
|
||||
2 an error
|
||||
|
||||
EXAMPLE:
|
||||
|
||||
For example, this command prints all removable "if" tests before "free"
|
||||
and "kfree" calls in the linux kernel sources:
|
||||
|
||||
git ls-files -z |xargs -0 $ME --name=kfree
|
||||
|
||||
EOF
|
||||
}
|
||||
exit $exit_code;
|
||||
}
|
||||
|
||||
{
|
||||
sub EXIT_MATCH {0}
|
||||
sub EXIT_NO_MATCH {1}
|
||||
sub EXIT_ERROR {2}
|
||||
my $err = EXIT_NO_MATCH;
|
||||
|
||||
my $list;
|
||||
my @name = qw(free);
|
||||
GetOptions
|
||||
(
|
||||
help => sub { usage 0 },
|
||||
version => sub { print "$ME version $VERSION\n"; exit },
|
||||
list => \$list,
|
||||
'name=s@' => \@name,
|
||||
) or usage 1;
|
||||
|
||||
# Make sure we have the right number of non-option arguments.
|
||||
# Always tell the user why we fail.
|
||||
@ARGV < 1
|
||||
and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR;
|
||||
|
||||
my $or = join '|', @name;
|
||||
my $regexp = qr/(?:$or)/;
|
||||
|
||||
# Set the input record separator.
|
||||
# Note: this makes it impractical to print line numbers.
|
||||
$/ = '"';
|
||||
|
||||
my $found_match = 0;
|
||||
FILE:
|
||||
foreach my $file (@ARGV)
|
||||
{
|
||||
open FH, '<', $file
|
||||
or (warn "$ME: can't open `$file' for reading: $!\n"),
|
||||
$err = EXIT_ERROR, next;
|
||||
while (defined (my $line = <FH>))
|
||||
{
|
||||
while ($line =~
|
||||
/\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*NULL)?\s*\)
|
||||
(?: \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)|
|
||||
\s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg)
|
||||
{
|
||||
# Compare "if" expression and free'd expression,
|
||||
# without regard to white space.
|
||||
(my $e1 = $2) =~ tr/ \t//d;
|
||||
my $e2 = defined $3 ? $3 : $4;
|
||||
$e2 =~ tr/ \t//d;
|
||||
if ($e1 eq $e2)
|
||||
{
|
||||
$found_match = 1;
|
||||
$list
|
||||
and (print "$file\0"), next FILE;
|
||||
print "$file: $1\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
continue
|
||||
{
|
||||
close FH;
|
||||
}
|
||||
|
||||
$found_match && $err == EXIT_NO_MATCH
|
||||
and $err = EXIT_MATCH;
|
||||
|
||||
exit $err;
|
||||
}
|
||||
|
||||
my $foo = <<'EOF';
|
||||
# The above is to *find* them.
|
||||
# This adjusts them, removing the unnecessary "if (p)" part.
|
||||
|
||||
# FIXME: do something like this as an option (doesn't do braces):
|
||||
useless-if-before-free -l $(lid -knone free) | xargs -0 \
|
||||
perl -0x3b -pi -e \
|
||||
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*NULL)?\s*\)\s+(free\s*\((?:\s*\([^)]+\))?\s*\1\s*\))/$2/s'
|
||||
|
||||
# Or, with git:
|
||||
git ls-files -z |xargs -0 perl -0x3b -pi -e '...'
|
||||
|
||||
Be careful that the result of the above transformation is valid.
|
||||
If the matched string is followed by "else", then obviously, it won't be.
|
||||
|
||||
When modifying files, refuse to process anything other than a regular file.
|
||||
EOF
|
||||
|
||||
## Local Variables:
|
||||
## indent-tabs-mode: nil
|
||||
## eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
## time-stamp-start: "my $VERSION = '"
|
||||
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
|
||||
## time-stamp-time-zone: "UTC"
|
||||
## time-stamp-end: "'; # UTC"
|
||||
## End:
|
@ -1,107 +0,0 @@
|
||||
#!/bin/sh
|
||||
# List version-controlled file names.
|
||||
|
||||
# Print a version string.
|
||||
scriptversion=2008-07-11.19
|
||||
|
||||
# Copyright (C) 2006-2008 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
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program 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 General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# List the specified version-controlled files.
|
||||
# With no argument, list them all. With a single DIRECTORY argument,
|
||||
# list the version-controlled files in that directory.
|
||||
|
||||
# If there's an argument, it must be a single, "."-relative directory name.
|
||||
# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
|
||||
|
||||
postprocess=
|
||||
case $1 in
|
||||
--help) cat <<EOF
|
||||
Usage: $0 [-C SRCDIR] [DIR]
|
||||
|
||||
Output a list of version-controlled files in DIR (default .), relative to
|
||||
SRCDIR (default .). SRCDIR must be the top directory of a checkout.
|
||||
|
||||
Options:
|
||||
--help print this help, then exit
|
||||
--version print version number, then exit
|
||||
-C SRCDIR change directory to SRCDIR before generating list
|
||||
|
||||
Report bugs and patches to <bug-gnulib@gnu.org>.
|
||||
EOF
|
||||
exit ;;
|
||||
|
||||
--version)
|
||||
year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
|
||||
cat <<EOF
|
||||
vc-list-files $scriptversion
|
||||
Copyright (C) $year Free Software Foundation, Inc,
|
||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||
This is free software: you are free to change and redistribute it.
|
||||
There is NO WARRANTY, to the extent permitted by law.
|
||||
EOF
|
||||
exit ;;
|
||||
|
||||
-C)
|
||||
test "$2" = . || postprocess="| sed 's|^|$2/|'"
|
||||
cd "$2" || exit 1
|
||||
shift; shift ;;
|
||||
esac
|
||||
|
||||
dir=
|
||||
case $# in
|
||||
0) ;;
|
||||
1) dir=$1 ;;
|
||||
*) echo "$0: too many arguments" 1>&2
|
||||
echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
|
||||
esac
|
||||
|
||||
test "x$dir" = x && dir=.
|
||||
|
||||
if test -d .git; then
|
||||
eval exec git ls-files '"$dir"' $postprocess
|
||||
elif test -d .hg; then
|
||||
eval exec hg locate '"$dir/*"' $postprocess
|
||||
elif test -d .bzr; then
|
||||
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
|
||||
eval exec bzr ls --versioned '"$dir"' $postprocess
|
||||
elif test -d CVS; then
|
||||
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
|
||||
if test -x build-aux/cvsu; then
|
||||
eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
|
||||
elif (cvsu --help) >/dev/null 2>&1; then
|
||||
eval cvsu --find --types=AFGM '"$dir"' $postprocess
|
||||
else
|
||||
eval awk -F/ \''{ \
|
||||
if (!$1 && $3 !~ /^-/) { \
|
||||
f=FILENAME; \
|
||||
if (f ~ /CVS\/Entries$/) \
|
||||
f = substr(f, 0, length(f)-11); \
|
||||
print f $2; \
|
||||
}}'\'' \
|
||||
`find "$dir" -name Entries -print` /dev/null' $postprocess
|
||||
fi
|
||||
else
|
||||
echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
259
cfg.mk
Normal file
259
cfg.mk
Normal file
@ -0,0 +1,259 @@
|
||||
# Customize Makefile.maint. -*- makefile -*-
|
||||
# Copyright (C) 2003-2009 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
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program 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 General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Use alpha.gnu.org for alpha and beta releases.
|
||||
# Use ftp.gnu.org for major releases.
|
||||
gnu_ftp_host-alpha = alpha.gnu.org
|
||||
gnu_ftp_host-beta = alpha.gnu.org
|
||||
gnu_ftp_host-major = ftp.gnu.org
|
||||
gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
|
||||
|
||||
url_dir_list = \
|
||||
ftp://$(gnu_rel_host)/gnu/coreutils
|
||||
|
||||
# Tests not to run as part of "make distcheck".
|
||||
local-checks-to-skip = \
|
||||
changelog-check \
|
||||
check-AUTHORS \
|
||||
makefile-check \
|
||||
makefile_path_separator_check \
|
||||
patch-check \
|
||||
sc_GPL_version \
|
||||
sc_always_defined_macros \
|
||||
sc_cast_of_alloca_return_value \
|
||||
sc_dd_max_sym_length \
|
||||
sc_error_exit_success \
|
||||
sc_file_system \
|
||||
sc_immutable_NEWS \
|
||||
sc_makefile_path_separator_check \
|
||||
sc_obsolete_symbols \
|
||||
sc_prohibit_S_IS_definition \
|
||||
sc_prohibit_atoi_atof \
|
||||
sc_prohibit_jm_in_m4 \
|
||||
sc_prohibit_quote_without_use \
|
||||
sc_prohibit_quotearg_without_use \
|
||||
sc_prohibit_stat_st_blocks \
|
||||
sc_root_tests \
|
||||
sc_space_tab \
|
||||
sc_sun_os_names \
|
||||
sc_system_h_headers \
|
||||
sc_tight_scope \
|
||||
sc_two_space_separator_in_usage \
|
||||
sc_error_message_uppercase \
|
||||
sc_program_name \
|
||||
sc_require_test_exit_idiom \
|
||||
sc_makefile_check \
|
||||
sc_useless_cpp_parens
|
||||
|
||||
useless_free_options = \
|
||||
--name=sexpr_free \
|
||||
--name=VIR_FREE \
|
||||
--name=xmlFree \
|
||||
--name=xmlXPathFreeContext \
|
||||
--name=xmlXPathFreeObject
|
||||
|
||||
# Avoid uses of write(2). Either switch to streams (fwrite), or use
|
||||
# the safewrite wrapper.
|
||||
sc_avoid_write:
|
||||
@if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
grep '\<write *(' $$($(VC_LIST_EXCEPT) | grep '\.c$$') && \
|
||||
{ echo "$(ME): the above files use write;" \
|
||||
" consider using the safewrite wrapper instead" \
|
||||
1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
|
||||
# Use STREQ rather than comparing strcmp == 0, or != 0.
|
||||
# Similarly, use STREQLEN or STRPREFIX rather than strncmp.
|
||||
sc_prohibit_strcmp_and_strncmp:
|
||||
@grep -nE '! *strn?cmp *\(|\<strn?cmp *\([^)]+\) *==' \
|
||||
$$($(VC_LIST_EXCEPT)) \
|
||||
| grep -vE ':# *define STREQ(LEN)?\(' && \
|
||||
{ echo '$(ME): use STREQ(LEN) in place of the above uses of strcmp(strncmp)' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Use virAsprintf rather than a'sprintf since *strp is undefined on error.
|
||||
sc_prohibit_asprintf:
|
||||
@re='\<[a]sprintf\>' \
|
||||
msg='use virAsprintf, not a'sprintf \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_prohibit_VIR_ERR_NO_MEMORY:
|
||||
@re='\<V''IR_ERR_NO_MEMORY\>' \
|
||||
msg='use virReportOOMError, not V'IR_ERR_NO_MEMORY \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
include Makefile.nonreentrant
|
||||
sc_prohibit_nonreentrant:
|
||||
@fail=0 ; \
|
||||
for i in $(NON_REENTRANT) ; \
|
||||
do \
|
||||
grep --before 2 --after 1 -nE "\<$$i\>[:space:]*\(" $$($(VC_LIST_EXCEPT)) && \
|
||||
fail=1 && echo "$(ME): use $${i}_r, not $${i}" || : ; \
|
||||
done ; \
|
||||
exit $$fail
|
||||
|
||||
# Prohibit the inclusion of <ctype.h>.
|
||||
sc_prohibit_ctype_h:
|
||||
@grep -E '^# *include *<ctype\.h>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo "$(ME): don't use ctype.h; instead, use c-ctype.h" \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Ensure that no C source file uses TABs for indentation.
|
||||
# Also match *.h.in files, to get libvirt.h.in.
|
||||
# Exclude files in gnulib, since they're imported.
|
||||
sc_TAB_in_indentation:
|
||||
@grep -lE '^ * ' /dev/null \
|
||||
$$($(VC_LIST_EXCEPT) \
|
||||
| grep -E '\.[ch](\.in)?$$' \
|
||||
| grep -v '^gnulib/') && \
|
||||
{ echo '$(ME): found TAB(s) used for indentation in C sources;'\
|
||||
'use spaces' 1>&2; exit 1; } || :
|
||||
|
||||
ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
|
||||
|isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
|
||||
|
||||
sc_avoid_ctype_macros:
|
||||
@grep -E '\b($(ctype_re)) *\(' /dev/null \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo "$(ME): don't use ctype macros (use c-ctype.h)" \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
sc_prohibit_virBufferAdd_with_string_literal:
|
||||
@re='\<virBufferAdd *\([^,]+, *"[^"]' \
|
||||
msg='use virBufferAddLit, not virBufferAdd, with a string literal' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Not only do they fail to deal well with ipv6, but the gethostby*
|
||||
# functions are also not thread-safe.
|
||||
sc_prohibit_gethostby:
|
||||
@re='\<gethostby(addr|name2?) *\(' \
|
||||
msg='use getaddrinfo, not gethostby*' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
# Many of the function names below came from this filter:
|
||||
# git grep -B2 '\<_('|grep -E '\.c- *[[:alpha:]_][[:alnum:]_]* ?\(.*[,;]$' \
|
||||
# |sed 's/.*\.c- *//'|perl -pe 's/ ?\(.*//'|sort -u \
|
||||
# |grep -vE '^(qsort|if|close|assert|fputc|free|N_|vir.*GetName|.*Unlock|virNodeListDevices|virHashRemoveEntry|freeaddrinfo|.*[fF]ree|xdrmem_create|xmlXPathFreeObject|virUUIDFormat|openvzSetProgramSentinal|polkit_action_unref)$'
|
||||
|
||||
msg_gen_function =
|
||||
msg_gen_function += DEBUG0
|
||||
msg_gen_function += DISABLE_fprintf
|
||||
msg_gen_function += ERROR
|
||||
msg_gen_function += ERROR0
|
||||
msg_gen_function += REMOTE_DEBUG
|
||||
msg_gen_function += ReportError
|
||||
msg_gen_function += VIR_FREE
|
||||
msg_gen_function += VIR_INFO
|
||||
msg_gen_function += VIR_USE_CPU
|
||||
msg_gen_function += errorf
|
||||
msg_gen_function += lxcError
|
||||
msg_gen_function += networkLog
|
||||
msg_gen_function += networkReportError
|
||||
msg_gen_function += oneError
|
||||
msg_gen_function += openvzError
|
||||
msg_gen_function += openvzLog
|
||||
msg_gen_function += qemudDispatchClientFailure
|
||||
msg_gen_function += qemudLog
|
||||
msg_gen_function += qemudReportError
|
||||
msg_gen_function += regerror
|
||||
msg_gen_function += remoteDispatchFormatError
|
||||
msg_gen_function += umlLog
|
||||
msg_gen_function += umlReportError
|
||||
msg_gen_function += virConfError
|
||||
msg_gen_function += virDomainReportError
|
||||
msg_gen_function += virSecurityReportError
|
||||
msg_gen_function += virHashError
|
||||
msg_gen_function += virLibConnError
|
||||
msg_gen_function += virLibDomainError
|
||||
msg_gen_function += virLog
|
||||
msg_gen_function += virNetworkReportError
|
||||
msg_gen_function += virNodeDeviceReportError
|
||||
msg_gen_function += virProxyError
|
||||
msg_gen_function += virRaiseError
|
||||
msg_gen_function += virReportErrorHelper
|
||||
msg_gen_function += virReportSystemError
|
||||
msg_gen_function += virSexprError
|
||||
msg_gen_function += virStorageLog
|
||||
msg_gen_function += virStorageReportError
|
||||
msg_gen_function += virXMLError
|
||||
msg_gen_function += virXenInotifyError
|
||||
msg_gen_function += virXenStoreError
|
||||
msg_gen_function += virXendError
|
||||
msg_gen_function += vshCloseLogFile
|
||||
msg_gen_function += xenUnifiedError
|
||||
msg_gen_function += xenXMError
|
||||
|
||||
# Uncomment the following and run "make syntax-check" to see diagnostics
|
||||
# that are not yet marked for translation, but that need to be rewritten
|
||||
# so that they are translatable.
|
||||
# msg_gen_function += error
|
||||
# msg_gen_function += fprintf
|
||||
# msg_gen_function += testError
|
||||
# msg_gen_function += virXenError
|
||||
# msg_gen_function += vshPrint
|
||||
# msg_gen_function += vshError
|
||||
|
||||
func_or := $(shell printf '$(msg_gen_function)'|tr -s '[[:space:]]' '|')
|
||||
func_re := ($(func_or))
|
||||
|
||||
# Look for diagnostics that aren't marked for translation.
|
||||
# This won't find any for which error's format string is on a separate line.
|
||||
# The sed filters eliminate false-positives like these:
|
||||
# _("...: "
|
||||
# "%s", _("no storage vol w..."
|
||||
sc_libvirt_unmarked_diagnostics:
|
||||
@grep -nE \
|
||||
'\<$(func_re) \([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT)) \
|
||||
| grep -v '_''(' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
@{ grep -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT)); \
|
||||
grep -A1 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
|
||||
| sed 's/_("[^"][^"]*"//;s/[ ]"%s"//' \
|
||||
| grep '[ ]"' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Disallow trailing blank lines.
|
||||
sc_prohibit_trailing_blank_lines:
|
||||
@$(VC_LIST_EXCEPT) | xargs perl -ln -0777 -e \
|
||||
'/\n\n+$$/ and print $$ARGV' > $@-t
|
||||
@found=0; test -s $@-t && { found=1; cat $@-t 1>&2; \
|
||||
echo '$(ME): found trailing blank line(s)' 1>&2; }; \
|
||||
rm -f $@-t; \
|
||||
test $$found = 0
|
||||
|
||||
# We don't use this feature of maint.mk.
|
||||
prev_version_file = /dev/null
|
||||
|
||||
ifeq (0,$(MAKELEVEL))
|
||||
_curr_status = .git-module-status
|
||||
# The sed filter accommodates those who check out on a commit from which
|
||||
# no tag is reachable. In that case, git submodule status prints a "-"
|
||||
# in column 1 and does not print a "git describe"-style string after the
|
||||
# submodule name. Contrast these:
|
||||
# -b653eda3ac4864de205419d9f41eec267cb89eeb .gnulib
|
||||
# b653eda3ac4864de205419d9f41eec267cb89eeb .gnulib (v0.0-2286-gb653eda)
|
||||
_submodule_hash = sed 's/.//;s/ .*//'
|
||||
_update_required := $(shell \
|
||||
actual=$$(git submodule status | $(_submodule_hash)); \
|
||||
stamp="$$($(_submodule_hash) $(_curr_status) 2>/dev/null)"; \
|
||||
test "$$stamp" = "$$actual"; echo $$?)
|
||||
ifeq (1,$(_update_required))
|
||||
$(error gnulib update required; run ./autogen.sh first)
|
||||
endif
|
||||
endif
|
366
configure.in
366
configure.in
@ -1,11 +1,16 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT([libvirt], [0.6.5])
|
||||
AC_INIT([libvirt], [0.7.1])
|
||||
AC_CONFIG_SRCDIR([src/libvirt.c])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AM_CONFIG_HEADER([config.h])
|
||||
dnl Make automake keep quiet about wildcards & other GNUmake-isms
|
||||
AM_INIT_AUTOMAKE([-Wno-portability])
|
||||
|
||||
# Use the silent-rules feature when possible.
|
||||
m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])])
|
||||
AM_SILENT_RULES([yes])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
LIBVIRT_MAJOR_VERSION=`echo $VERSION | awk -F. '{print $1}'`
|
||||
@ -58,10 +63,6 @@ dnl Support building Win32 DLLs (must appear *before* AM_PROG_LIBTOOL)
|
||||
AC_LIBTOOL_WIN32_DLL
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
dnl Override normal libtool in favour of our quiet version
|
||||
LIBTOOL='$(SHELL) $(top_srcdir)/mylibtool'
|
||||
AC_SUBST([LIBTOOL])
|
||||
|
||||
AM_PROG_CC_C_O
|
||||
|
||||
VERSION_SCRIPT_FLAGS=-Wl,--version-script=
|
||||
@ -82,7 +83,7 @@ dnl Availability of various not common threadsafe functions
|
||||
AC_CHECK_FUNCS([strerror_r strtok_r getmntent_r getgrnam_r getpwuid_r])
|
||||
|
||||
dnl Availability of various common headers (non-fatal if missing).
|
||||
AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/syslimits.h sys/utsname.h sys/wait.h winsock2.h sched.h termios.h sys/poll.h syslog.h])
|
||||
AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/syslimits.h sys/utsname.h sys/wait.h winsock2.h sched.h termios.h sys/poll.h syslog.h mntent.h])
|
||||
|
||||
dnl Where are the XDR functions?
|
||||
dnl If portablexdr is installed, prefer that.
|
||||
@ -179,19 +180,25 @@ dnl Allow to build without Xen, QEMU/KVM, test or remote driver
|
||||
AC_ARG_WITH([xen],
|
||||
[ --with-xen add XEN support (on)],[],[with_xen=yes])
|
||||
AC_ARG_WITH([xen-inotify],
|
||||
[ --with-xen-inotify add XEN inotify support (on)],[],[with_xen_inotify=yes])
|
||||
[ --with-xen-inotify add XEN inotify support (on)],[],[with_xen_inotify=check])
|
||||
AC_ARG_WITH([qemu],
|
||||
[ --with-qemu add QEMU/KVM support (on)],[],[with_qemu=yes])
|
||||
AC_ARG_WITH([uml],
|
||||
[ --with-uml add UML support (on)],[],[with_uml=yes])
|
||||
[ --with-uml add UML support (on)],[],[with_uml=check])
|
||||
AC_ARG_WITH([openvz],
|
||||
[ --with-openvz add OpenVZ support (on)],[],[with_openvz=yes])
|
||||
AC_ARG_WITH([libssh2],
|
||||
[ --with-libssh2=[PFX] libssh2 location],[],[with_libssh2=yes])
|
||||
AC_ARG_WITH([phyp],
|
||||
[ --with-phyp=[PFX] add PHYP support (on)],[],[with_phyp=check])
|
||||
AC_ARG_WITH([vbox],
|
||||
[ --with-vbox add VirtualBox support (on)],[],[with_vbox=yes])
|
||||
AC_ARG_WITH([lxc],
|
||||
[ --with-lxc add Linux Container support (on)],[],[with_lxc=yes])
|
||||
[ --with-lxc add Linux Container support (on)],[],[with_lxc=check])
|
||||
AC_ARG_WITH([one],
|
||||
[ --with-one add ONE support (on)],[],[with_one=check])
|
||||
AC_ARG_WITH([esx],
|
||||
[ --with-esx add ESX support (on)],[],[with_esx=check])
|
||||
AC_ARG_WITH([test],
|
||||
[ --with-test add test driver support (on)],[],[with_test=yes])
|
||||
AC_ARG_WITH([remote],
|
||||
@ -290,14 +297,6 @@ if test "x$with_vbox" = "xyes"; then
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_VBOX], [test "$with_vbox" = "yes"])
|
||||
|
||||
if test "$with_libvirtd" = "no" ; then
|
||||
with_lxc=no
|
||||
fi
|
||||
if test "$with_lxc" = "yes" ; then
|
||||
AC_DEFINE_UNQUOTED([WITH_LXC], 1, [whether LXC driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"])
|
||||
|
||||
if test "$with_libvirtd" = "no" ; then
|
||||
with_qemu=no
|
||||
fi
|
||||
@ -306,11 +305,6 @@ if test "$with_qemu" = "yes" ; then
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_QEMU], [test "$with_qemu" = "yes"])
|
||||
|
||||
if test "$with_uml" = "yes" ; then
|
||||
AC_DEFINE_UNQUOTED([WITH_UML], 1, [whether UML driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_UML], [test "$with_uml" = "yes"])
|
||||
|
||||
if test "$with_one" = "yes" ; then
|
||||
AC_DEFINE_UNQUOTED([WITH_ONE],1,[whether ONE driver is enabled])
|
||||
fi
|
||||
@ -397,13 +391,69 @@ if test "$with_xen" != "yes"; then
|
||||
with_xen_inotify=no
|
||||
fi
|
||||
if test "$with_xen_inotify" != "no"; then
|
||||
AC_CHECK_HEADER([linux/inotify.h],[],[with_xen_inotify=no])
|
||||
AC_CHECK_HEADER([sys/inotify.h], [
|
||||
with_xen_inotify=yes
|
||||
], [
|
||||
if test "$with_xen_inotify" = "check"; then
|
||||
with_xen_inotify=no
|
||||
AC_MSG_NOTICE([Header file <sys/inotify.h> is required for Xen Inotify support, disabling it])
|
||||
else
|
||||
AC_MSG_ERROR([Header file <sys/inotify.h> is required for Xen Inotify support!])
|
||||
fi
|
||||
0])
|
||||
fi
|
||||
if test "$with_xen_inotify" = "yes"; then
|
||||
AC_DEFINE_UNQUOTED([WITH_XEN_INOTIFY], 1,[whether Xen inotify sub-driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_XEN_INOTIFY], [test "$with_xen_inotify" = "yes"])
|
||||
|
||||
dnl
|
||||
dnl check for kvm headers
|
||||
dnl
|
||||
AC_CHECK_HEADERS([linux/kvm.h])
|
||||
|
||||
dnl
|
||||
dnl check for sufficient headers for LXC
|
||||
dnl
|
||||
if test "$with_lxc" = "yes" -o "$with_lxc" = "check"; then
|
||||
AC_CHECK_HEADER([sched.h],
|
||||
dnl Header is there, check for unshare()
|
||||
[
|
||||
AC_TRY_LINK([#define _GNU_SOURCE
|
||||
#include <sched.h>], [
|
||||
unshare (1);
|
||||
], [
|
||||
with_lxc=yes
|
||||
], [
|
||||
if test "$with_lxc" = "check"; then
|
||||
with_lxc=no
|
||||
AC_MSG_NOTICE([Function unshare() not present in <sched.h> header but required for LXC driver, disabling it])
|
||||
else
|
||||
AC_MSG_ERROR([Function unshare() not present in <sched.h> header, but required for LXC driver])
|
||||
fi
|
||||
|
||||
])
|
||||
|
||||
dnl Header is not there
|
||||
],[
|
||||
if test "$with_lxc" = "check"; then
|
||||
with_lxc=no
|
||||
AC_MSG_NOTICE([Header <sched.h> not found but required for LXC driver, disabling it])
|
||||
else
|
||||
AC_MSG_ERROR([Header <sched.h> not found but required for LXC driver])
|
||||
fi
|
||||
|
||||
])
|
||||
fi
|
||||
if test "$with_libvirtd" = "no" ; then
|
||||
with_lxc=no
|
||||
fi
|
||||
if test "$with_lxc" = "yes" ; then
|
||||
AC_DEFINE_UNQUOTED([WITH_LXC], 1, [whether LXC driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"])
|
||||
|
||||
|
||||
dnl
|
||||
dnl check for kernel headers required by src/bridge.c
|
||||
dnl
|
||||
@ -412,10 +462,9 @@ if test "$with_qemu" = "yes" -o "$with_lxc" = "yes" ; then
|
||||
AC_MSG_ERROR([You must install kernel-headers in order to compile libvirt]))
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl check for kvm headers
|
||||
dnl
|
||||
AC_CHECK_HEADERS([linux/kvm.h])
|
||||
|
||||
dnl Need to test if pkg-config exists
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
dnl OpenNebula driver Compilation setting
|
||||
dnl
|
||||
@ -445,9 +494,6 @@ AC_SUBST([XMLRPC_CFLAGS])
|
||||
AC_SUBST([XMLRPC_LIBS])
|
||||
|
||||
|
||||
dnl Need to test if pkg-config exists
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
dnl ==========================================================================
|
||||
dnl find libxml2 library, borrowed from xmlsec
|
||||
dnl ==========================================================================
|
||||
@ -595,40 +641,61 @@ AC_SUBST([SASL_LIBS])
|
||||
dnl PolicyKit library
|
||||
POLKIT_CFLAGS=
|
||||
POLKIT_LIBS=
|
||||
PKCHECK_PATH=
|
||||
AC_ARG_WITH([polkit],
|
||||
[ --with-polkit use PolicyKit for UNIX socket access checks],
|
||||
[],
|
||||
[with_polkit=check])
|
||||
|
||||
with_polkit0=no
|
||||
with_polkit1=no
|
||||
if test "x$with_polkit" = "xyes" -o "x$with_polkit" = "xcheck"; then
|
||||
PKG_CHECK_MODULES(POLKIT, polkit-dbus >= $POLKIT_REQUIRED,
|
||||
[with_polkit=yes], [
|
||||
if test "x$with_polkit" = "xcheck" ; then
|
||||
with_polkit=no
|
||||
else
|
||||
AC_MSG_ERROR(
|
||||
[You must install PolicyKit >= $POLKIT_REQUIRED to compile libvirt])
|
||||
fi
|
||||
])
|
||||
if test "x$with_polkit" = "xyes" ; then
|
||||
dnl Check for new polkit first - just a binary
|
||||
AC_PATH_PROG([PKCHECK_PATH],[pkcheck], [], [/usr/sbin:$PATH])
|
||||
if test "x$PKCHECK_PATH" != "x" ; then
|
||||
AC_DEFINE_UNQUOTED([PKCHECK_PATH],["$PKCHECK_PATH"],[Location of pkcheck program])
|
||||
AC_DEFINE_UNQUOTED([HAVE_POLKIT], 1,
|
||||
[use PolicyKit for UNIX socket access checks])
|
||||
[use PolicyKit for UNIX socket access checks])
|
||||
AC_DEFINE_UNQUOTED([HAVE_POLKIT1], 1,
|
||||
[use PolicyKit for UNIX socket access checks])
|
||||
with_polkit="yes"
|
||||
with_polkit1="yes"
|
||||
else
|
||||
dnl Check for old polkit second - library + binary
|
||||
PKG_CHECK_MODULES(POLKIT, polkit-dbus >= $POLKIT_REQUIRED,
|
||||
[with_polkit=yes], [
|
||||
if test "x$with_polkit" = "xcheck" ; then
|
||||
with_polkit=no
|
||||
else
|
||||
AC_MSG_ERROR(
|
||||
[You must install PolicyKit >= $POLKIT_REQUIRED to compile libvirt])
|
||||
fi
|
||||
])
|
||||
if test "x$with_polkit" = "xyes" ; then
|
||||
AC_DEFINE_UNQUOTED([HAVE_POLKIT], 1,
|
||||
[use PolicyKit for UNIX socket access checks])
|
||||
AC_DEFINE_UNQUOTED([HAVE_POLKIT0], 1,
|
||||
[use PolicyKit for UNIX socket access checks])
|
||||
|
||||
old_CFLAGS=$CFLAGS
|
||||
old_LDFLAGS=$LDFLAGS
|
||||
CFLAGS="$CFLAGS $POLKIT_CFLAGS"
|
||||
LDFLAGS="$LDFLAGS $POLKIT_LIBS"
|
||||
AC_CHECK_FUNCS([polkit_context_is_caller_authorized])
|
||||
CFLAGS="$old_CFLAGS"
|
||||
LDFLAGS="$old_LDFLAGS"
|
||||
old_CFLAGS=$CFLAGS
|
||||
old_LDFLAGS=$LDFLAGS
|
||||
CFLAGS="$CFLAGS $POLKIT_CFLAGS"
|
||||
LDFLAGS="$LDFLAGS $POLKIT_LIBS"
|
||||
AC_CHECK_FUNCS([polkit_context_is_caller_authorized])
|
||||
CFLAGS="$old_CFLAGS"
|
||||
LDFLAGS="$old_LDFLAGS"
|
||||
|
||||
AC_PATH_PROG([POLKIT_AUTH], [polkit-auth])
|
||||
if test "x$POLKIT_AUTH" != "x"; then
|
||||
AC_DEFINE_UNQUOTED([POLKIT_AUTH],["$POLKIT_AUTH"],[Location of polkit-auth program])
|
||||
AC_PATH_PROG([POLKIT_AUTH], [polkit-auth])
|
||||
if test "x$POLKIT_AUTH" != "x"; then
|
||||
AC_DEFINE_UNQUOTED([POLKIT_AUTH],["$POLKIT_AUTH"],[Location of polkit-auth program])
|
||||
fi
|
||||
with_polkit0="yes"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL([HAVE_POLKIT], [test "x$with_polkit" = "xyes"])
|
||||
AM_CONDITIONAL([HAVE_POLKIT0], [test "x$with_polkit0" = "xyes"])
|
||||
AM_CONDITIONAL([HAVE_POLKIT1], [test "x$with_polkit1" = "xyes"])
|
||||
AC_SUBST([POLKIT_CFLAGS])
|
||||
AC_SUBST([POLKIT_LIBS])
|
||||
|
||||
@ -769,6 +836,104 @@ AC_SUBST([NUMACTL_CFLAGS])
|
||||
AC_SUBST([NUMACTL_LIBS])
|
||||
|
||||
|
||||
dnl
|
||||
dnl Checks for the UML driver
|
||||
dnl
|
||||
|
||||
if test "$with_uml" = "yes" -o "$with_uml" = "check"; then
|
||||
AC_CHECK_HEADER([sys/inotify.h], [
|
||||
with_uml=yes
|
||||
], [
|
||||
if test "$with_uml" = "check"; then
|
||||
with_uml=no
|
||||
AC_MSG_NOTICE([<sys/inotify.h> is required for the UML driver, disabling it])
|
||||
else
|
||||
AC_MSG_ERROR([The <sys/inotify.h> is required for the UML driver. Upgrade your libc6.])
|
||||
fi
|
||||
])
|
||||
fi
|
||||
if test "$with_libvirtd" = "no" ; then
|
||||
with_uml=no
|
||||
fi
|
||||
if test "$with_uml" = "yes" ; then
|
||||
AC_DEFINE_UNQUOTED([WITH_UML], 1, [whether UML driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_UML], [test "$with_uml" = "yes"])
|
||||
|
||||
|
||||
|
||||
dnl
|
||||
dnl libssh checks
|
||||
dnl
|
||||
|
||||
if test "$with_libssh2" != "yes" -a "$with_libssh2" != "no"; then
|
||||
libssh2_path="$with_libssh2"
|
||||
elif test "$with_libssh2" = "yes"; then
|
||||
libssh2_path="/usr/local/lib/"
|
||||
elif test "$with_libssh2" = "no"; then
|
||||
with_phyp="no";
|
||||
fi
|
||||
|
||||
if test "$with_phyp" = "check"; then
|
||||
AC_CHECK_LIB([ssh2],[libssh2_session_startup],[
|
||||
LIBSSH2_LIBS="$LIBSSH2_LIBS -lssh2 -L$libssh2_path"
|
||||
AC_SUBST([LIBSSH2_LIBS])
|
||||
],[
|
||||
with_phyp="no"
|
||||
with_libssh2="no";
|
||||
],[])
|
||||
|
||||
if test "$with_phyp" != "no"; then
|
||||
AC_CHECK_HEADERS([libssh2.h],[
|
||||
with_phyp="yes"
|
||||
LIBSSH2_CFLAGS="-I/usr/local/include"
|
||||
AC_SUBST([LIBSSH2_CFLAGS])
|
||||
],[
|
||||
with_phyp="no"
|
||||
with_libssh2="no";
|
||||
],[
|
||||
])
|
||||
fi
|
||||
|
||||
if test "$with_phyp" != "no"; then
|
||||
saved_libs="$LIBS"
|
||||
LIBS="$LIBS -lssh2"
|
||||
AC_TRY_LINK([#include <libssh2.h>], [
|
||||
(void) libssh2_session_block_directions(NULL);
|
||||
], [
|
||||
AC_DEFINE_UNQUOTED([WITH_PHYP], 1, [whether IBM HMC / IVM driver is enabled])
|
||||
], [
|
||||
with_phyp=no
|
||||
AC_MSG_NOTICE([Function libssh2_session_block_directions() not present in your version of libssh2 but required for Phyp driver, disabling it])
|
||||
])
|
||||
LIBS="$saved_libs"
|
||||
fi
|
||||
elif test "$with_phyp" = "yes"; then
|
||||
AC_CHECK_LIB([ssh2],[libssh2_session_startup],[
|
||||
LIBSSH2_LIBS="$LIBSSH2_LIBS -lssh2 -L$libssh2_path"
|
||||
AC_SUBST([LIBSSH2_LIBS])],[
|
||||
AC_MSG_ERROR([You must install the libssh2 to compile Phyp driver.])
|
||||
])
|
||||
|
||||
AC_CHECK_HEADERS([libssh2.h],[
|
||||
LIBSSH2_CFLAGS="-I/usr/local/include"
|
||||
AC_SUBST([LIBSSH2_CFLAGS])],[
|
||||
AC_MSG_ERROR([Cannot find libssh2 headers. Is libssh2 installed ?])
|
||||
],[])
|
||||
|
||||
saved_libs="$LIBS"
|
||||
LIBS="$LIBS -lssh2"
|
||||
AC_TRY_LINK([#include <libssh2.h>], [
|
||||
(void) libssh2_session_block_directions(NULL);
|
||||
], [], [
|
||||
AC_MSG_ERROR([Function libssh2_session_block_directions() not present in your version of libssh2. Need >= 1.0])
|
||||
])
|
||||
LIBS="$saved_libs"
|
||||
|
||||
AC_DEFINE_UNQUOTED([WITH_PHYP], 1,
|
||||
[whether IBM HMC / IVM driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_PHYP],[test "$with_phyp" = "yes"])
|
||||
|
||||
dnl libcap-ng
|
||||
AC_ARG_WITH([capng],
|
||||
@ -897,6 +1062,17 @@ AM_CONDITIONAL([WITH_NETCF], [test "$with_netcf" = "yes"])
|
||||
AC_SUBST([NETCF_CFLAGS])
|
||||
AC_SUBST([NETCF_LIBS])
|
||||
|
||||
|
||||
with_secrets=yes
|
||||
if test "$with_libvirtd" = "no"; then
|
||||
with_secrets=no
|
||||
fi
|
||||
if test "$with_secrets" = "yes" ; then
|
||||
AC_DEFINE_UNQUOTED([WITH_SECRETS], 1, [whether local secrets management driver is available])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_SECRETS], [test "$with_secrets" = "yes"])
|
||||
|
||||
|
||||
AC_ARG_WITH([storage-fs],
|
||||
[ --with-storage-fs with FileSystem backend for the storage driver (on)],[],[with_storage_fs=check])
|
||||
AC_ARG_WITH([storage-lvm],
|
||||
@ -905,6 +1081,8 @@ AC_ARG_WITH([storage-iscsi],
|
||||
[ --with-storage-iscsi with iSCSI backend for the storage driver (on)],[],[with_storage_iscsi=check])
|
||||
AC_ARG_WITH([storage-scsi],
|
||||
[ --with-storage-scsi with SCSI backend for the storage driver (on)],[],[with_storage_scsi=check])
|
||||
AC_ARG_WITH([storage-mpath],
|
||||
[ --with-storage-mpath with mpath backend for the storage driver (on)],[],[with_storage_mpath=check])
|
||||
AC_ARG_WITH([storage-disk],
|
||||
[ --with-storage-disk with GPartd Disk backend for the storage driver (on)],[],[with_storage_disk=check])
|
||||
|
||||
@ -915,6 +1093,7 @@ if test "$with_libvirtd" = "no"; then
|
||||
with_storage_lvm=no
|
||||
with_storage_iscsi=no
|
||||
with_storage_scsi=no
|
||||
with_storage_mpath=no
|
||||
with_storage_disk=no
|
||||
fi
|
||||
if test "$with_storage_dir" = "yes" ; then
|
||||
@ -1036,6 +1215,26 @@ if test "$with_storage_scsi" = "check"; then
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_STORAGE_SCSI], [test "$with_storage_scsi" = "yes"])
|
||||
|
||||
if test "$with_storage_mpath" = "check"; then
|
||||
with_storage_mpath=yes
|
||||
|
||||
AC_DEFINE_UNQUOTED([WITH_STORAGE_MPATH], 1,
|
||||
[whether mpath backend for storage driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_STORAGE_MPATH], [test "$with_storage_mpath" = "yes"])
|
||||
|
||||
if test "$with_storage_mpath" = "yes"; then
|
||||
DEVMAPPER_REQUIRED=0.0
|
||||
DEVMAPPER_CFLAGS=
|
||||
DEVMAPPER_LIBS=
|
||||
PKG_CHECK_MODULES(DEVMAPPER, devmapper >= $DEVMAPPER_REQUIRED,
|
||||
[], [
|
||||
AC_MSG_ERROR(
|
||||
[You must install device-mapper-devel >= $DEVMAPPER_REQUIRED to compile libvirt])
|
||||
])
|
||||
fi
|
||||
AC_SUBST([DEVMAPPER_CFLAGS])
|
||||
AC_SUBST([DEVMAPPER_LIBS])
|
||||
|
||||
LIBPARTED_CFLAGS=
|
||||
LIBPARTED_LIBS=
|
||||
@ -1083,6 +1282,35 @@ AM_CONDITIONAL([WITH_STORAGE_DISK], [test "$with_storage_disk" = "yes"])
|
||||
AC_SUBST([LIBPARTED_CFLAGS])
|
||||
AC_SUBST([LIBPARTED_LIBS])
|
||||
|
||||
dnl
|
||||
dnl check for libcurl (ESX)
|
||||
dnl
|
||||
|
||||
LIBCURL_CFLAGS=""
|
||||
LIBCURL_LIBS=""
|
||||
LIBCURL_REQUIRED="7.18.0"
|
||||
LIBCURL_FOUND="no"
|
||||
|
||||
if test "$with_esx" = "yes" -o "$with_esx" = "check"; then
|
||||
PKG_CHECK_MODULES(LIBCURL, libcurl >= $LIBCURL_REQUIRED, [
|
||||
LIBCURL_FOUND=yes
|
||||
with_esx="yes"
|
||||
], [
|
||||
if test "$with_esx" = "check"; then
|
||||
with_esx=no
|
||||
AC_MSG_NOTICE([libcurl is required for ESX driver, disabling it])
|
||||
else
|
||||
AC_MSG_ERROR([libcurl >= $LIBCURL_REQUIRED is required for the ESX driver])
|
||||
fi
|
||||
])
|
||||
fi
|
||||
if test "$with_esx" = "yes" ; then
|
||||
AC_DEFINE_UNQUOTED([WITH_ESX], 1, [whether ESX driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_ESX], [test "$with_esx" = "yes"])
|
||||
|
||||
AC_SUBST([LIBCURL_CFLAGS])
|
||||
AC_SUBST([LIBCURL_LIBS])
|
||||
|
||||
dnl
|
||||
dnl check for python
|
||||
@ -1436,6 +1664,19 @@ AM_CONDITIONAL([WITH_NODE_DEVICES], [test "$with_nodedev" = "yes"])
|
||||
|
||||
AM_CONDITIONAL([WITH_LINUX], [test `uname -s` = "Linux"])
|
||||
|
||||
|
||||
AC_ARG_WITH([qemu-user],
|
||||
[ --with-qemu-user username to run QEMU system instance as],
|
||||
[QEMU_USER=${withval}],
|
||||
[QEMU_USER=root])
|
||||
AC_ARG_WITH([qemu-group],
|
||||
[ --with-qemu-group groupname to run QEMU system instance as],
|
||||
[QEMU_GROUP=${withval}],
|
||||
[QEMU_GROUP=root])
|
||||
AC_DEFINE_UNQUOTED([QEMU_USER], ["$QEMU_USER"], [QEMU user account])
|
||||
AC_DEFINE_UNQUOTED([QEMU_GROUP], ["$QEMU_GROUP"], [QEMU group account])
|
||||
|
||||
|
||||
# Only COPYING.LIB is under version control, yet COPYING
|
||||
# is included as part of the distribution tarball.
|
||||
# Copy one to the other, but only if this is a srcdir-build.
|
||||
@ -1477,7 +1718,9 @@ AC_MSG_NOTICE([ UML: $with_uml])
|
||||
AC_MSG_NOTICE([ OpenVZ: $with_openvz])
|
||||
AC_MSG_NOTICE([ VBox: $with_vbox])
|
||||
AC_MSG_NOTICE([ LXC: $with_lxc])
|
||||
AC_MSG_NOTICE([ PHYP: $with_phyp])
|
||||
AC_MSG_NOTICE([ ONE: $with_one])
|
||||
AC_MSG_NOTICE([ ESX: $with_esx])
|
||||
AC_MSG_NOTICE([ Test: $with_test])
|
||||
AC_MSG_NOTICE([ Remote: $with_remote])
|
||||
AC_MSG_NOTICE([ Network: $with_network])
|
||||
@ -1492,6 +1735,7 @@ AC_MSG_NOTICE([ NetFS: $with_storage_fs])
|
||||
AC_MSG_NOTICE([ LVM: $with_storage_lvm])
|
||||
AC_MSG_NOTICE([ iSCSI: $with_storage_iscsi])
|
||||
AC_MSG_NOTICE([ SCSI: $with_storage_scsi])
|
||||
AC_MSG_NOTICE([ mpath: $with_storage_mpath])
|
||||
AC_MSG_NOTICE([ Disk: $with_storage_disk])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Security Drivers])
|
||||
@ -1509,6 +1753,16 @@ AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Libraries])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([ libxml: $LIBXML_CFLAGS $LIBXML_LIBS])
|
||||
if test "$with_esx" = "yes" ; then
|
||||
AC_MSG_NOTICE([ libcurl: $LIBCURL_CFLAGS $LIBCURL_LIBS])
|
||||
else
|
||||
AC_MSG_NOTICE([ libcurl: no])
|
||||
fi
|
||||
if test "$with_libssh2" != "no" ; then
|
||||
AC_MSG_NOTICE([ libssh2: $LIBSSH2_CFLAGS $LIBSSH2_LIBS])
|
||||
else
|
||||
AC_MSG_NOTICE([ libssh2: no])
|
||||
fi
|
||||
AC_MSG_NOTICE([ gnutls: $GNUTLS_CFLAGS $GNUTLS_LIBS])
|
||||
if test "$with_sasl" != "no" ; then
|
||||
AC_MSG_NOTICE([ sasl: $SASL_CFLAGS $SASL_LIBS])
|
||||
@ -1521,7 +1775,11 @@ else
|
||||
AC_MSG_NOTICE([ avahi: no])
|
||||
fi
|
||||
if test "$with_polkit" = "yes" ; then
|
||||
AC_MSG_NOTICE([ polkit: $POLKIT_CFLAGS $POLKIT_LIBS])
|
||||
if test "$with_polkit0" = "yes" ; then
|
||||
AC_MSG_NOTICE([ polkit: $POLKIT_CFLAGS $POLKIT_LIBS (version 0)])
|
||||
else
|
||||
AC_MSG_NOTICE([ polkit: $PKCHECK_PATH (version 1)])
|
||||
fi
|
||||
else
|
||||
AC_MSG_NOTICE([ polkit: no])
|
||||
fi
|
||||
@ -1577,3 +1835,7 @@ AC_MSG_NOTICE([ Debug: $enable_debug])
|
||||
AC_MSG_NOTICE([ Warnings: $enable_compile_warnings])
|
||||
AC_MSG_NOTICE([ Readline: $lv_use_readline])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Privileges])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([ QEMU: $QEMU_USER:$QEMU_GROUP])
|
||||
AC_MSG_NOTICE([])
|
||||
|
@ -1,4 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
.memdump
|
||||
apibuild.pyc
|
@ -55,7 +55,9 @@ xml = \
|
||||
testdomfv0.xml \
|
||||
testnetdef.xml \
|
||||
testnetpriv.xml \
|
||||
testnode.xml
|
||||
testnode.xml \
|
||||
testpool.xml \
|
||||
testvol.xml
|
||||
|
||||
fig = \
|
||||
libvirt-net-logical.fig \
|
||||
@ -125,8 +127,11 @@ libvirt-api.xml libvirt-refs.xml: apibuild.py \
|
||||
-(./apibuild.py)
|
||||
|
||||
$(top_builddir)/NEWS: $(top_srcdir)/docs/news.xsl $(top_srcdir)/docs/news.html.in
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
$(XSLTPROC) --nonet $(top_srcdir)/docs/news.xsl $(top_srcdir)/docs/news.html.in > $(top_builddir)/NEWS ; fi );
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
$(XSLTPROC) --nonet $(top_srcdir)/docs/news.xsl \
|
||||
$(top_srcdir)/docs/news.html.in \
|
||||
| perl -0777 -pe 's/\n\n+$$/\n/' \
|
||||
> $@-t && mv $@-t $@ ; fi );
|
||||
|
||||
clean-local:
|
||||
rm -f *~ *.bak *.hierarchy *.signals *-unused.txt
|
||||
|
@ -42,4 +42,3 @@ index f7ebbc3..b8f9128 100644
|
||||
# .... define new API here using predicted next version number ....
|
||||
--
|
||||
1.6.0.6
|
||||
|
||||
|
@ -34,4 +34,3 @@ index 39dc413..c357b76 100644
|
||||
/*
|
||||
--
|
||||
1.6.0.6
|
||||
|
||||
|
@ -117,4 +117,3 @@ index f3d4484..ded18a7 100644
|
||||
*/
|
||||
--
|
||||
1.6.0.6
|
||||
|
||||
|
@ -45,4 +45,3 @@ index 2d8e6a2..2c79949 100644
|
||||
/* Custom RPC structure. */
|
||||
--
|
||||
1.6.0.6
|
||||
|
||||
|
@ -82,4 +82,3 @@ index 4b3afb0..e665ef8 100644
|
||||
|
||||
--
|
||||
1.6.0.6
|
||||
|
||||
|
@ -68,4 +68,3 @@ index e27820f..8d24a3a 100644
|
||||
**************************/
|
||||
--
|
||||
1.6.0.6
|
||||
|
||||
|
@ -1169,4 +1169,3 @@ index 29cdb9e..7621212 100644
|
||||
if (!(actual = virNodeDeviceDefFormat(NULL, dev)))
|
||||
--
|
||||
1.6.0.6
|
||||
|
||||
|
@ -130,4 +130,3 @@ index cb32ede..ab2a2b7 100644
|
||||
{"pool-build", cmdPoolBuild, opts_pool_build, info_pool_build},
|
||||
--
|
||||
1.6.0.6
|
||||
|
||||
|
@ -39,7 +39,7 @@ ignored_functions = {
|
||||
"virDomainMigratePrepare": "private function for migration",
|
||||
"virDomainMigratePrepare2": "private function for migration",
|
||||
"virDrvSupportsFeature": "private function for remote access",
|
||||
"DllMain": "specific function fo Win32",
|
||||
"DllMain": "specific function for Win32",
|
||||
}
|
||||
|
||||
def escape(raw):
|
||||
|
@ -131,6 +131,12 @@
|
||||
machines across an entire data center of hosts. It integrates
|
||||
with FreeIPA for Kerberos authentication, and in the future,
|
||||
certificate management.
|
||||
</dd><dt><a href="http://community.abiquo.com/display/AbiCloud">AbiCloud</a></dt><dd>
|
||||
AbiCloud is an open source cloud platform manager which allows to
|
||||
easily deploy a private cloud in your datacenter. One of the key
|
||||
differences of AbiCloud is the web rich interface for managing the
|
||||
infrastructure. You can deploy a new service just dragging and
|
||||
dropping a VM.
|
||||
</dd></dl>
|
||||
<h2>LiveCD / Appliances</h2>
|
||||
<dl><dt><a href="http://et.redhat.com/~rjones/virt-p2v/">virt-p2v</a></dt><dd>
|
||||
|
@ -89,6 +89,14 @@
|
||||
with FreeIPA for Kerberos authentication, and in the future,
|
||||
certificate management.
|
||||
</dd>
|
||||
<dt><a href="http://community.abiquo.com/display/AbiCloud">AbiCloud</a></dt>
|
||||
<dd>
|
||||
AbiCloud is an open source cloud platform manager which allows to
|
||||
easily deploy a private cloud in your datacenter. One of the key
|
||||
differences of AbiCloud is the web rich interface for managing the
|
||||
infrastructure. You can deploy a new service just dragging and
|
||||
dropping a VM.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2>LiveCD / Appliances</h2>
|
||||
|
@ -83,17 +83,17 @@
|
||||
the <code>Virtualization Tools</code> product and the <code>libvirt</code>
|
||||
component.
|
||||
</p>
|
||||
<ul><li><a href="">View libvirt tickets</a></li><li><a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Virtualization%20Tools&component=libvirt">New libvirt ticket</a></li></ul>
|
||||
<ul><li><a href="http://bugzilla.redhat.com/buglist.cgi?component=libvirt&product=Virtualization%20Tools">View libvirt tickets</a></li><li><a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Virtualization%20Tools&component=libvirt">New libvirt ticket</a></li></ul>
|
||||
<h2>Linux Distribution specific bug reports</h2>
|
||||
<ul><li>
|
||||
If you are using official binaries from a <strong>Fedora distribution</strong>, enter
|
||||
tickets against the <code>Fedora</code> product and the <code>libvirt</code>
|
||||
component.
|
||||
<ul><li><a href="">View Fedora libvirt tickets</a></li><li><a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=libvirt">New Fedora libvirt ticket</a></li></ul></li><li>
|
||||
<ul><li><a href="http://bugzilla.redhat.com/buglist.cgi?component=libvirt&product=Fedora">View Fedora libvirt tickets</a></li><li><a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=libvirt">New Fedora libvirt ticket</a></li></ul></li><li>
|
||||
If you are using official binaries from <strong>Red Hat Enterprise Linux distribution</strong>,
|
||||
tickets against the <code>Red Hat Enterprise Linux 5</code> product and
|
||||
the <code>libvirt</code> component.
|
||||
<ul><li><a href="">View Red Hat Enterprise Linux libvirt tickets</a></li><li><a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%205&component=libvirt">New Red Hat Enterprise Linux libvirt ticket</a></li></ul></li><li>
|
||||
<ul><li><a href="http://bugzilla.redhat.com/buglist.cgi?component=libvirt&product=Red%20Hat%20Enterprise%20Linux%205">View Red Hat Enterprise Linux libvirt tickets</a></li><li><a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%205&component=libvirt">New Red Hat Enterprise Linux libvirt ticket</a></li></ul></li><li>
|
||||
If you are using official binaries from another Linux distribution first
|
||||
follow their own bug reporting guidelines.
|
||||
</li></ul>
|
||||
|
@ -23,7 +23,7 @@
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="">View libvirt tickets</a></li>
|
||||
<li><a href="http://bugzilla.redhat.com/buglist.cgi?component=libvirt&product=Virtualization%20Tools">View libvirt tickets</a></li>
|
||||
<li><a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Virtualization%20Tools&component=libvirt">New libvirt ticket</a></li>
|
||||
</ul>
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
tickets against the <code>Fedora</code> product and the <code>libvirt</code>
|
||||
component.
|
||||
<ul>
|
||||
<li><a href="">View Fedora libvirt tickets</a></li>
|
||||
<li><a href="http://bugzilla.redhat.com/buglist.cgi?component=libvirt&product=Fedora">View Fedora libvirt tickets</a></li>
|
||||
<li><a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=libvirt">New Fedora libvirt ticket</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@ -43,7 +43,7 @@
|
||||
tickets against the <code>Red Hat Enterprise Linux 5</code> product and
|
||||
the <code>libvirt</code> component.
|
||||
<ul>
|
||||
<li><a href="">View Red Hat Enterprise Linux libvirt tickets</a></li>
|
||||
<li><a href="http://bugzilla.redhat.com/buglist.cgi?component=libvirt&product=Red%20Hat%20Enterprise%20Linux%205">View Red Hat Enterprise Linux libvirt tickets</a></li>
|
||||
<li><a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%205&component=libvirt">New Red Hat Enterprise Linux libvirt ticket</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
@ -1,3 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
libvirt.devhelp
|
@ -123,5 +123,3 @@
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
||||
|
||||
|
@ -575,5 +575,3 @@ it indexes the project page, the APIs as well as the mailing-list archives. </p>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
||||
|
||||
|
@ -59,6 +59,7 @@ typedef struct _virNetwork <a href="#virNetwork">virNetwork</a>;
|
||||
typedef enum <a href="#virDomainEventResumedDetailType">virDomainEventResumedDetailType</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virDomainBlockStatsStruct">virDomainBlockStatsStruct</a> * <a href="#virDomainBlockStatsPtr">virDomainBlockStatsPtr</a>;
|
||||
typedef struct _virConnect <a href="#virConnect">virConnect</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virSecret">virSecret</a> * <a href="#virSecretPtr">virSecretPtr</a>;
|
||||
typedef enum <a href="#virDomainEventStartedDetailType">virDomainEventStartedDetailType</a>;
|
||||
typedef struct _virDomainInfo <a href="#virDomainInfo">virDomainInfo</a>;
|
||||
typedef enum <a href="#virStoragePoolDeleteFlags">virStoragePoolDeleteFlags</a>;
|
||||
@ -67,6 +68,7 @@ typedef struct _virStoragePool <a href="#virStoragePool">virStoragePool</a>;
|
||||
typedef enum <a href="#virDomainEventType">virDomainEventType</a>;
|
||||
typedef struct _virDomainInterfaceStats <a href="#virDomainInterfaceStatsStruct">virDomainInterfaceStatsStruct</a>;
|
||||
typedef struct _virStoragePoolInfo <a href="#virStoragePoolInfo">virStoragePoolInfo</a>;
|
||||
typedef struct _virSecret <a href="#virSecret">virSecret</a>;
|
||||
typedef enum <a href="#virDomainState">virDomainState</a>;
|
||||
typedef struct _virDomain <a href="#virDomain">virDomain</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virDomainInterfaceStatsStruct">virDomainInterfaceStatsStruct</a> * <a href="#virDomainInterfaceStatsPtr">virDomainInterfaceStatsPtr</a>;
|
||||
@ -112,17 +114,20 @@ typedef <a href="libvirt-libvirt.html#virStoragePoolInfo">virStoragePoolInfo</a>
|
||||
typedef enum <a href="#virDomainCreateFlags">virDomainCreateFlags</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virSecurityLabel">virSecurityLabel</a> * <a href="#virSecurityLabelPtr">virSecurityLabelPtr</a>;
|
||||
typedef struct _virSecurityModel <a href="#virSecurityModel">virSecurityModel</a>;
|
||||
typedef enum <a href="#virSecretUsageType">virSecretUsageType</a>;
|
||||
char * <a href="#virStoragePoolGetXMLDesc">virStoragePoolGetXMLDesc</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags);
|
||||
int <a href="#virSecretGetUUIDString">virSecretGetUUIDString</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> char * buf);
|
||||
const char * <a href="#virStorageVolGetKey">virStorageVolGetKey</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
|
||||
typedef void <a href="#virEventUpdateTimeoutFunc">virEventUpdateTimeoutFunc</a> (int timer, <br/> int timeout);
|
||||
int <a href="#virConnectClose">virConnectClose</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
int <a href="#virDomainUndefine">virDomainUndefine</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainDefineXML">virDomainDefineXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xml);
|
||||
int <a href="#virDomainShutdown">virDomainShutdown</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virConnectListStoragePools">virConnectListStoragePools</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames);
|
||||
int <a href="#virConnectListDefinedInterfaces">virConnectListDefinedInterfaces</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames);
|
||||
int <a href="#virGetVersion">virGetVersion</a> (unsigned long * libVer, <br/> const char * type, <br/> unsigned long * typeVer);
|
||||
int <a href="#virNodeGetCellsFreeMemory">virNodeGetCellsFreeMemory</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> unsigned long long * freeMems, <br/> int startCell, <br/> int maxCells);
|
||||
int <a href="#virInitialize">virInitialize</a> (void);
|
||||
const char * <a href="#virNodeDeviceGetName">virNodeDeviceGetName</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
|
||||
int <a href="#virConnectNumOfSecrets">virConnectNumOfSecrets</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
int <a href="#virStoragePoolSetAutostart">virStoragePoolSetAutostart</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> int autostart);
|
||||
char * <a href="#virConnectDomainXMLFromNative">virConnectDomainXMLFromNative</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * nativeFormat, <br/> const char * nativeConfig, <br/> unsigned int flags);
|
||||
int <a href="#virNodeDeviceDettach">virNodeDeviceDettach</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
|
||||
@ -131,7 +136,7 @@ int <a href="#virConnectDomainEventDeregister">virConnectDomainEventDeregister</
|
||||
int <a href="#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virSchedParameterPtr">virSchedParameterPtr</a> params, <br/> int * nparams);
|
||||
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * uuidstr);
|
||||
int <a href="#virConnectNumOfDefinedNetworks">virConnectNumOfDefinedNetworks</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
int <a href="#virConnectNumOfDomains">virConnectNumOfDomains</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
int <a href="#virConnectListStoragePools">virConnectListStoragePools</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames);
|
||||
int <a href="#virNetworkGetUUID">virNetworkGetUUID</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br/> unsigned char * uuid);
|
||||
char * <a href="#virInterfaceGetXMLDesc">virInterfaceGetXMLDesc</a> (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface, <br/> unsigned int flags);
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virStoragePoolGetConnect">virStoragePoolGetConnect</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
|
||||
@ -144,6 +149,7 @@ int <a href="#virDomainSetAutostart">virDomainSetAutostart</a> (<a href="libvir
|
||||
<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> <a href="#virStorageVolLookupByPath">virStorageVolLookupByPath</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * path);
|
||||
<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> <a href="#virStorageVolLookupByName">virStorageVolLookupByName</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> const char * name);
|
||||
int <a href="#virNetworkCreate">virNetworkCreate</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> <a href="#virSecretLookupByUUID">virSecretLookupByUUID</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const unsigned char * uuid);
|
||||
int <a href="#virDomainSetMaxMemory">virDomainSetMaxMemory</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned long memory);
|
||||
void <a href="#virEventRegisterImpl">virEventRegisterImpl</a> (<a href="libvirt-libvirt.html#virEventAddHandleFunc">virEventAddHandleFunc</a> addHandle, <br/> <a href="libvirt-libvirt.html#virEventUpdateHandleFunc">virEventUpdateHandleFunc</a> updateHandle, <br/> <a href="libvirt-libvirt.html#virEventRemoveHandleFunc">virEventRemoveHandleFunc</a> removeHandle, <br/> <a href="libvirt-libvirt.html#virEventAddTimeoutFunc">virEventAddTimeoutFunc</a> addTimeout, <br/> <a href="libvirt-libvirt.html#virEventUpdateTimeoutFunc">virEventUpdateTimeoutFunc</a> updateTimeout, <br/> <a href="libvirt-libvirt.html#virEventRemoveTimeoutFunc">virEventRemoveTimeoutFunc</a> removeTimeout);
|
||||
<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> <a href="#virInterfaceDefineXML">virInterfaceDefineXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xml, <br/> unsigned int flags);
|
||||
@ -155,11 +161,13 @@ typedef void <a href="#virEventUpdateHandleFunc">virEventUpdateHandleFunc</a> (i
|
||||
int <a href="#virDomainDestroy">virDomainDestroy</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virConnectNumOfNetworks">virConnectNumOfNetworks</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolLookupByUUIDString">virStoragePoolLookupByUUIDString</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * uuidstr);
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virSecretGetConnect">virSecretGetConnect</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret);
|
||||
int <a href="#virInterfaceCreate">virInterfaceCreate</a> (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface, <br/> unsigned int flags);
|
||||
char * <a href="#virDomainGetXMLDesc">virDomainGetXMLDesc</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int flags);
|
||||
<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> <a href="#virSecretLookupByUsage">virSecretLookupByUsage</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> int usageType, <br/> const char * usageID);
|
||||
int <a href="#virStoragePoolGetUUID">virStoragePoolGetUUID</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned char * uuid);
|
||||
int <a href="#virNodeDeviceFree">virNodeDeviceFree</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
|
||||
int <a href="#virStorageVolGetInfo">virStorageVolGetInfo</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br/> <a href="libvirt-libvirt.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a> info);
|
||||
int <a href="#virSecretGetUsageType">virSecretGetUsageType</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret);
|
||||
int <a href="#virDomainGetInfo">virDomainGetInfo</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virDomainInfoPtr">virDomainInfoPtr</a> info);
|
||||
<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> <a href="#virNodeDeviceCreateXML">virNodeDeviceCreateXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xmlDesc, <br/> unsigned int flags);
|
||||
int <a href="#virNetworkDestroy">virNetworkDestroy</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
@ -181,41 +189,48 @@ const char * <a href="#virInterfaceGetName">virInterfaceGetName</a> (<a href="li
|
||||
int <a href="#virStoragePoolCreate">virStoragePoolCreate</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags);
|
||||
int <a href="#virNodeGetInfo">virNodeGetInfo</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> <a href="libvirt-libvirt.html#virNodeInfoPtr">virNodeInfoPtr</a> info);
|
||||
int <a href="#virNetworkSetAutostart">virNetworkSetAutostart</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br/> int autostart);
|
||||
<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> <a href="#virSecretLookupByUUIDString">virSecretLookupByUUIDString</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * uuidstr);
|
||||
unsigned long <a href="#virDomainGetMaxMemory">virDomainGetMaxMemory</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virStoragePoolFree">virStoragePoolFree</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
|
||||
int <a href="#virConnectNumOfDefinedInterfaces">virConnectNumOfDefinedInterfaces</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
typedef void <a href="#virFreeCallback">virFreeCallback</a> (void * opaque);
|
||||
<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a href="#virNetworkDefineXML">virNetworkDefineXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xml);
|
||||
int <a href="#virNodeDeviceListCaps">virNodeDeviceListCaps</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev, <br/> char ** const names, <br/> int maxnames);
|
||||
int <a href="#virDomainBlockStats">virDomainBlockStats</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char * path, <br/> <a href="libvirt-libvirt.html#virDomainBlockStatsPtr">virDomainBlockStatsPtr</a> stats, <br/> size_t size);
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virConnectOpenAuth">virConnectOpenAuth</a> (const char * name, <br/> <a href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a> auth, <br/> int flags);
|
||||
int <a href="#virStoragePoolDelete">virStoragePoolDelete</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags);
|
||||
typedef int <a href="#virEventRemoveHandleFunc">virEventRemoveHandleFunc</a> (int watch);
|
||||
int <a href="#virDomainResume">virDomainResume</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
const char * <a href="#virStorageVolGetName">virStorageVolGetName</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
|
||||
int <a href="#virStoragePoolGetAutostart">virStoragePoolGetAutostart</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> int * autostart);
|
||||
int <a href="#virDomainGetAutostart">virDomainGetAutostart</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int * autostart);
|
||||
int <a href="#virStoragePoolListVolumes">virStoragePoolListVolumes</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> char ** const names, <br/> int maxnames);
|
||||
char * <a href="#virConnectGetHostname">virConnectGetHostname</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
typedef int <a href="#virEventRemoveTimeoutFunc">virEventRemoveTimeoutFunc</a> (int timer);
|
||||
int <a href="#virStorageVolGetInfo">virStorageVolGetInfo</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br/> <a href="libvirt-libvirt.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a> info);
|
||||
const char * <a href="#virDomainGetName">virDomainGetName</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virStoragePoolRef">virStoragePoolRef</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
|
||||
char * <a href="#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br/> int flags);
|
||||
int <a href="#virConnectNumOfStoragePools">virConnectNumOfStoragePools</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virInterfaceGetConnect">virInterfaceGetConnect</a> (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface);
|
||||
int <a href="#virStoragePoolNumOfVolumes">virStoragePoolNumOfVolumes</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
|
||||
const char * <a href="#virNetworkGetName">virNetworkGetName</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
char * <a href="#virSecretGetXMLDesc">virSecretGetXMLDesc</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> unsigned int flags);
|
||||
int <a href="#virConnectListDefinedDomains">virConnectListDefinedDomains</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames);
|
||||
char * <a href="#virConnectGetCapabilities">virConnectGetCapabilities</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainLookupByName">virDomainLookupByName</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * name);
|
||||
char * <a href="#virConnectFindStoragePoolSources">virConnectFindStoragePoolSources</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * type, <br/> const char * srcSpec, <br/> unsigned int flags);
|
||||
int <a href="#virStorageVolFree">virStorageVolFree</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
|
||||
int <a href="#virDomainPinVcpu">virDomainPinVcpu</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int vcpu, <br/> unsigned char * cpumap, <br/> int maplen);
|
||||
int <a href="#virNodeGetSecurityModel">virNodeGetSecurityModel</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> <a href="libvirt-libvirt.html#virSecurityModelPtr">virSecurityModelPtr</a> secmodel);
|
||||
int <a href="#virDomainRestore">virDomainRestore</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * from);
|
||||
int <a href="#virSecretGetUUID">virSecretGetUUID</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> unsigned char * uuid);
|
||||
int <a href="#virNodeDeviceDestroy">virNodeDeviceDestroy</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
|
||||
char * <a href="#virStorageVolGetPath">virStorageVolGetPath</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
|
||||
<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a href="#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * uuidstr);
|
||||
typedef int <a href="#virConnectDomainEventCallback">virConnectDomainEventCallback</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> <a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> int event, <br/> int detail, <br/> void * opaque);
|
||||
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainLookupByID">virDomainLookupByID</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> int id);
|
||||
int <a href="#virStorageVolDelete">virStorageVolDelete</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br/> unsigned int flags);
|
||||
int <a href="#virStorageVolFree">virStorageVolFree</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
|
||||
int <a href="#virSecretUndefine">virSecretUndefine</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret);
|
||||
int <a href="#virConnectListInterfaces">virConnectListInterfaces</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames);
|
||||
int <a href="#virDomainMemoryPeek">virDomainMemoryPeek</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> unsigned long long start, <br/> size_t size, <br/> void * buffer, <br/> unsigned int flags);
|
||||
<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a href="#virNetworkLookupByUUID">virNetworkLookupByUUID</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const unsigned char * uuid);
|
||||
@ -223,18 +238,19 @@ int <a href="#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a> (
|
||||
int <a href="#virConnectRef">virConnectRef</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
int <a href="#virDomainGetUUID">virDomainGetUUID</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned char * uuid);
|
||||
<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a href="#virNetworkCreateXML">virNetworkCreateXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xmlDesc);
|
||||
int <a href="#virNetworkUndefine">virNetworkUndefine</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
int <a href="#virConnectDomainEventRegister">virConnectDomainEventRegister</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> <a href="libvirt-libvirt.html#virConnectDomainEventCallback">virConnectDomainEventCallback</a> cb, <br/> void * opaque, <br/> <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> freecb);
|
||||
int <a href="#virDomainGetVcpus">virDomainGetVcpus</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virVcpuInfoPtr">virVcpuInfoPtr</a> info, <br/> int maxinfo, <br/> unsigned char * cpumaps, <br/> int maplen);
|
||||
<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> <a href="#virNodeDeviceLookupByName">virNodeDeviceLookupByName</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * name);
|
||||
int <a href="#virStoragePoolGetInfo">virStoragePoolGetInfo</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> <a href="libvirt-libvirt.html#virStoragePoolInfoPtr">virStoragePoolInfoPtr</a> info);
|
||||
int <a href="#virDomainResume">virDomainResume</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
typedef int <a href="#virEventRemoveHandleFunc">virEventRemoveHandleFunc</a> (int watch);
|
||||
int <a href="#virInterfaceRef">virInterfaceRef</a> (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface);
|
||||
const char * <a href="#virInterfaceGetMACString">virInterfaceGetMACString</a> (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface);
|
||||
int <a href="#virNetworkRef">virNetworkRef</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
int <a href="#virConnectNumOfDomains">virConnectNumOfDomains</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
int <a href="#virStoragePoolRefresh">virStoragePoolRefresh</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags);
|
||||
int <a href="#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> <a href="#virStorageVolCreateXMLFrom">virStorageVolCreateXMLFrom</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> const char * xmldesc, <br/> <a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> clonevol, <br/> unsigned int flags);
|
||||
int <a href="#virDomainUndefine">virDomainUndefine</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virConnectClose">virConnectClose</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
int <a href="#virDomainReboot">virDomainReboot</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int flags);
|
||||
int <a href="#virNetworkGetUUIDString">virNetworkGetUUIDString</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br/> char * buf);
|
||||
<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a href="#virNetworkLookupByName">virNetworkLookupByName</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * name);
|
||||
@ -243,7 +259,7 @@ typedef void <a href="#virEventHandleCallback">virEventHandleCallback</a> (int
|
||||
char * <a href="#virDomainGetSchedulerType">virDomainGetSchedulerType</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int * nparams);
|
||||
int <a href="#virNodeDeviceReset">virNodeDeviceReset</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
|
||||
int <a href="#virDomainDetachDevice">virDomainDetachDevice</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml);
|
||||
int <a href="#virStoragePoolNumOfVolumes">virStoragePoolNumOfVolumes</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
|
||||
const char * <a href="#virSecretGetUsageID">virSecretGetUsageID</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret);
|
||||
int <a href="#virStoragePoolGetUUIDString">virStoragePoolGetUUIDString</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> char * buf);
|
||||
int <a href="#virNodeDeviceReAttach">virNodeDeviceReAttach</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
|
||||
int <a href="#virStoragePoolUndefine">virStoragePoolUndefine</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
|
||||
@ -251,10 +267,11 @@ typedef int <a href="#virConnectAuthCallbackPtr">virConnectAuthCallbackPtr</a> (
|
||||
int <a href="#virDomainAttachDevice">virDomainAttachDevice</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml);
|
||||
char * <a href="#virConnectGetURI">virConnectGetURI</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virConnectOpenReadOnly">virConnectOpenReadOnly</a> (const char * name);
|
||||
<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> <a href="#virSecretDefineXML">virSecretDefineXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xml, <br/> unsigned int flags);
|
||||
int <a href="#virNetworkFree">virNetworkFree</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolLookupByUUID">virStoragePoolLookupByUUID</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const unsigned char * uuid);
|
||||
typedef int <a href="#virEventAddHandleFunc">virEventAddHandleFunc</a> (int fd, <br/> int event, <br/> <a href="libvirt-libvirt.html#virEventHandleCallback">virEventHandleCallback</a> cb, <br/> void * opaque, <br/> <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> ff);
|
||||
int <a href="#virNetworkUndefine">virNetworkUndefine</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
int <a href="#virNetworkRef">virNetworkRef</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
int <a href="#virConnectListDefinedStoragePools">virConnectListDefinedStoragePools</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames);
|
||||
typedef void <a href="#virEventTimeoutCallback">virEventTimeoutCallback</a> (int timer, <br/> void * opaque);
|
||||
int <a href="#virInterfaceFree">virInterfaceFree</a> (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface);
|
||||
@ -263,6 +280,7 @@ int <a href="#virNodeDeviceNumOfCaps">virNodeDeviceNumOfCaps</a> (<a href="libv
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virNetworkGetConnect">virNetworkGetConnect</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> net);
|
||||
unsigned long long <a href="#virNodeGetFreeMemory">virNodeGetFreeMemory</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
int <a href="#virInterfaceDestroy">virInterfaceDestroy</a> (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface, <br/> unsigned int flags);
|
||||
int <a href="#virSecretSetValue">virSecretSetValue</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> const unsigned char * value, <br/> size_t value_size, <br/> unsigned int flags);
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virStorageVolGetConnect">virStorageVolGetConnect</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
|
||||
int <a href="#virNodeNumOfDevices">virNodeNumOfDevices</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * cap, <br/> unsigned int flags);
|
||||
int <a href="#virStoragePoolDestroy">virStoragePoolDestroy</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
|
||||
@ -274,6 +292,7 @@ int <a href="#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a> (<a href="libvir
|
||||
int <a href="#virDomainGetUUIDString">virDomainGetUUIDString</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> char * buf);
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virDomainGetConnect">virDomainGetConnect</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom);
|
||||
int <a href="#virConnectNumOfDefinedStoragePools">virConnectNumOfDefinedStoragePools</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
int <a href="#virSecretFree">virSecretFree</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret);
|
||||
int <a href="#virNodeListDevices">virNodeListDevices</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * cap, <br/> char ** const names, <br/> int maxnames, <br/> unsigned int flags);
|
||||
const char * <a href="#virNodeDeviceGetParent">virNodeDeviceGetParent</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virConnectOpen">virConnectOpen</a> (const char * name);
|
||||
@ -282,13 +301,16 @@ int <a href="#virNodeDeviceRef">virNodeDeviceRef</a> (<a href="libvirt-libvirt.
|
||||
int <a href="#virInterfaceUndefine">virInterfaceUndefine</a> (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface);
|
||||
int <a href="#virDomainSetVcpus">virDomainSetVcpus</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int nvcpus);
|
||||
int <a href="#virDomainRef">virDomainRef</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virConnectListSecrets">virConnectListSecrets</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** uuids, <br/> int maxuuids);
|
||||
int <a href="#virConnectNumOfInterfaces">virConnectNumOfInterfaces</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
unsigned int <a href="#virDomainGetID">virDomainGetID</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virSecretRef">virSecretRef</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret);
|
||||
int <a href="#virDomainBlockPeek">virDomainBlockPeek</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char * path, <br/> unsigned long long offset, <br/> size_t size, <br/> void * buffer, <br/> unsigned int flags);
|
||||
typedef int <a href="#virEventAddTimeoutFunc">virEventAddTimeoutFunc</a> (int timeout, <br/> <a href="libvirt-libvirt.html#virEventTimeoutCallback">virEventTimeoutCallback</a> cb, <br/> void * opaque, <br/> <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> ff);
|
||||
<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> <a href="#virInterfaceLookupByName">virInterfaceLookupByName</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * name);
|
||||
int <a href="#virDomainInterfaceStats">virDomainInterfaceStats</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char * path, <br/> <a href="libvirt-libvirt.html#virDomainInterfaceStatsPtr">virDomainInterfaceStatsPtr</a> stats, <br/> size_t size);
|
||||
int <a href="#virConnectListNetworks">virConnectListNetworks</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames);
|
||||
unsigned char * <a href="#virSecretGetValue">virSecretGetValue</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> size_t * value_size, <br/> unsigned int flags);
|
||||
<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> <a href="#virStorageVolLookupByKey">virStorageVolLookupByKey</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * key);
|
||||
</pre>
|
||||
</div>
|
||||
@ -527,7 +549,8 @@ The content of this structure is not made public by the API.
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainMemoryFlags">Enum </a>virDomainMemoryFlags</h3><pre class="programlisting">enum <a href="#virDomainMemoryFlags">virDomainMemoryFlags</a> {
|
||||
<a name="VIR_MEMORY_VIRTUAL">VIR_MEMORY_VIRTUAL</a> = 1 /* addresses are virtual addresses */
|
||||
<a name="VIR_MEMORY_VIRTUAL">VIR_MEMORY_VIRTUAL</a> = 1 /* addresses are virtual addresses */
|
||||
<a name="VIR_MEMORY_PHYSICAL">VIR_MEMORY_PHYSICAL</a> = 2 /* addresses are physical addresses */
|
||||
};
|
||||
</pre><p/>
|
||||
</div>
|
||||
@ -637,6 +660,23 @@ The content of this structure is not made public by the API.
|
||||
<a name="VIR_DOMAIN_SCHED_FIELD_BOOLEAN">VIR_DOMAIN_SCHED_FIELD_BOOLEAN</a> = 6 /* boolean(character) case */
|
||||
};
|
||||
</pre><p/>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecret">Structure </a>virSecret</h3><pre class="programlisting">struct _virSecret {
|
||||
The content of this structure is not made public by the API.
|
||||
} virSecret;
|
||||
</pre><p/>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretPtr">Typedef </a>virSecretPtr</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecret">virSecret</a> * virSecretPtr;
|
||||
</pre><p/>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretUsageType">Enum </a>virSecretUsageType</h3><pre class="programlisting">enum <a href="#virSecretUsageType">virSecretUsageType</a> {
|
||||
<a name="VIR_SECRET_USAGE_TYPE_NONE">VIR_SECRET_USAGE_TYPE_NONE</a> = 0
|
||||
<a name="VIR_SECRET_USAGE_TYPE_VOLUME">VIR_SECRET_USAGE_TYPE_VOLUME</a> = 1 /* Expect more owner types later... */
|
||||
};
|
||||
</pre><p/>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecurityLabel">Structure </a>virSecurityLabel</h3><pre class="programlisting">struct _virSecurityLabel {
|
||||
@ -862,6 +902,10 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectListDefinedDomains"/>virConnectListDefinedDomains ()</h3><pre class="programlisting">int virConnectListDefinedDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames)<br/>
|
||||
</pre><p>list the defined but inactive domains, stores the pointers to the names in @names</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>pointer to an array to store the names</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of the array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of names provided in the array or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectListDefinedInterfaces"/>virConnectListDefinedInterfaces ()</h3><pre class="programlisting">int virConnectListDefinedInterfaces (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames)<br/>
|
||||
</pre><p>Collect the list of defined (inactive) physical host interfaces, and store their names in @names.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of names of interfaces</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of interfaces found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectListDefinedNetworks"/>virConnectListDefinedNetworks ()</h3><pre class="programlisting">int virConnectListDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames)<br/>
|
||||
</pre><p>list the inactive networks, stores the pointers to the names in @names</p>
|
||||
@ -876,12 +920,16 @@ The content of this structure is not made public by the API.
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>ids</tt></i>:</span></td><td>array to collect the list of IDs of active domains</td></tr><tr><td><span class="term"><i><tt>maxids</tt></i>:</span></td><td>size of @ids</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of domain found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectListInterfaces"/>virConnectListInterfaces ()</h3><pre class="programlisting">int virConnectListInterfaces (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames)<br/>
|
||||
</pre><p>Collect the list of physical host interfaces, and store their names in @names</p>
|
||||
</pre><p>Collect the list of active physical host interfaces, and store their names in @names</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of names of interfaces</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of interfaces found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectListNetworks"/>virConnectListNetworks ()</h3><pre class="programlisting">int virConnectListNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames)<br/>
|
||||
</pre><p>Collect the list of active networks, and store their names in @names</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of names of active networks</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of networks found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectListSecrets"/>virConnectListSecrets ()</h3><pre class="programlisting">int virConnectListSecrets (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** uuids, <br/> int maxuuids)<br/>
|
||||
</pre><p>List UUIDs of defined secrets, store pointers to names in uuids.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td><a href="libvirt-libvirt.html#virConnect">virConnect</a> connection</td></tr><tr><td><span class="term"><i><tt>uuids</tt></i>:</span></td><td>Pointer to an array to store the UUIDs</td></tr><tr><td><span class="term"><i><tt>maxuuids</tt></i>:</span></td><td>size of the array.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of UUIDs provided in the array, or -1 on failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectListStoragePools"/>virConnectListStoragePools ()</h3><pre class="programlisting">int virConnectListStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames)<br/>
|
||||
</pre><p>Provides the list of names of active storage pools upto maxnames. If there are more than maxnames, the remaining names will be silently ignored.</p>
|
||||
@ -890,6 +938,10 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfDefinedDomains"/>virConnectNumOfDefinedDomains ()</h3><pre class="programlisting">int virConnectNumOfDefinedDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Provides the number of defined but inactive domains.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of domain found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfDefinedInterfaces"/>virConnectNumOfDefinedInterfaces ()</h3><pre class="programlisting">int virConnectNumOfDefinedInterfaces (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Provides the number of defined (inactive) interfaces on the physical host.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of defined interface found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfDefinedNetworks"/>virConnectNumOfDefinedNetworks ()</h3><pre class="programlisting">int virConnectNumOfDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Provides the number of inactive networks.</p>
|
||||
@ -904,12 +956,16 @@ The content of this structure is not made public by the API.
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of domain found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfInterfaces"/>virConnectNumOfInterfaces ()</h3><pre class="programlisting">int virConnectNumOfInterfaces (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Provides the number of interfaces on the physical host.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of interface found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
</pre><p>Provides the number of active interfaces on the physical host.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of active interfaces found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfNetworks"/>virConnectNumOfNetworks ()</h3><pre class="programlisting">int virConnectNumOfNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Provides the number of active networks.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of network found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfSecrets"/>virConnectNumOfSecrets ()</h3><pre class="programlisting">int virConnectNumOfSecrets (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Fetch number of currently defined secrets.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td><a href="libvirt-libvirt.html#virConnect">virConnect</a> connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number currently defined secrets.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfStoragePools"/>virConnectNumOfStoragePools ()</h3><pre class="programlisting">int virConnectNumOfStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Provides the number of active storage pools</p>
|
||||
@ -917,14 +973,14 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectOpen"/>virConnectOpen ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpen (const char * name)<br/>
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor and xen store</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error If @name is NULL then probing will be done to determine a suitable default driver to activate. This involves trying each hypervisor in turn until one successfully opens. If the LIBVIRT_DEFAULT_URI environment variable is set, then it will be used in preference to probing for a driver. If connecting to an unprivileged hypervisor driver which requires the libvirtd daemon to be active, it will automatically be launched if not already running. This can be prevented by setting the environment variable LIBVIRT_AUTOSTART=0 URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectOpenAuth"/>virConnectOpenAuth ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenAuth (const char * name, <br/> <a href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a> auth, <br/> int flags)<br/>
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor. If necessary, authentication will be performed fetching credentials via the callback</p>
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor. If necessary, authentication will be performed fetching credentials via the callback See <a href="libvirt-libvirt.html#virConnectOpen">virConnectOpen</a> for notes about environment variables which can have an effect on opening drivers</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>auth</tt></i>:</span></td><td>Authenticate callback parameters</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>Open flags</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectOpenReadOnly"/>virConnectOpenReadOnly ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenReadOnly (const char * name)<br/>
|
||||
</pre><p>This function should be called first to get a restricted connection to the library functionalities. The set of APIs usable are then restricted on the available methods to control the domains.</p>
|
||||
</pre><p>This function should be called first to get a restricted connection to the library functionalities. The set of APIs usable are then restricted on the available methods to control the domains. See <a href="libvirt-libvirt.html#virConnectOpen">virConnectOpen</a> for notes about environment variables which can have an effect on opening drivers</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectRef"/>virConnectRef ()</h3><pre class="programlisting">int virConnectRef (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
@ -1145,23 +1201,23 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virInterfaceFree"/>virInterfaceFree ()</h3><pre class="programlisting">int virInterfaceFree (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br/>
|
||||
</pre><p>Free the interface object. The interface itself is unaltered. The data structure is freed and should not be used thereafter.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>a interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>an interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virInterfaceGetConnect"/>virInterfaceGetConnect ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virInterfaceGetConnect (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br/>
|
||||
</pre><p>Provides the connection pointer associated with an interface. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the interface object together.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>pointer to a interface</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>pointer to an interface</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virInterfaceGetMACString"/>virInterfaceGetMACString ()</h3><pre class="programlisting">const char * virInterfaceGetMACString (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br/>
|
||||
</pre><p>Get the MAC for a interface as string. For more information about MAC see RFC4122.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>a interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the MAC address (in null-terminated ASCII format) or NULL, the string need not be deallocated its lifetime will be the same as the interface object.</td></tr></tbody></table></div></div>
|
||||
</pre><p>Get the MAC for an interface as string. For more information about MAC see RFC4122.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>an interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the MAC address (in null-terminated ASCII format) or NULL, the string need not be deallocated its lifetime will be the same as the interface object.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virInterfaceGetName"/>virInterfaceGetName ()</h3><pre class="programlisting">const char * virInterfaceGetName (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br/>
|
||||
</pre><p>Get the public name for that interface</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>a interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the name or NULL, the string need not be deallocated its lifetime will be the same as the interface object.</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>an interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the name or NULL, the string need not be deallocated its lifetime will be the same as the interface object.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virInterfaceGetXMLDesc"/>virInterfaceGetXMLDesc ()</h3><pre class="programlisting">char * virInterfaceGetXMLDesc (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Provide an XML description of the interface. The description may be reused later to recreate the interface with virInterfaceCreateXML().</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>a interface object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>and OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.</td></tr></tbody></table></div></div>
|
||||
</pre><p>Provide an XML description of the interface. The description may be reused later to redefine the interface with virInterfaceDefineXML().</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>an interface object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>an OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virInterfaceLookupByMACString"/>virInterfaceLookupByMACString ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> virInterfaceLookupByMACString (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * macstr)<br/>
|
||||
</pre><p>Try to lookup an interface on the given hypervisor based on its MAC.</p>
|
||||
@ -1172,7 +1228,7 @@ The content of this structure is not made public by the API.
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>name for the interface</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new interface object or NULL in case of failure. If the interface cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_INTERFACE">VIR_ERR_NO_INTERFACE</a> error is raised.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virInterfaceRef"/>virInterfaceRef ()</h3><pre class="programlisting">int virInterfaceRef (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br/>
|
||||
</pre><p>Increment the reference count on the interface. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virInterfaceFree">virInterfaceFree</a> to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a interface would increment the reference count.</p>
|
||||
</pre><p>Increment the reference count on the interface. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virInterfaceFree">virInterfaceFree</a> to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using an interface would increment the reference count.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>the interface to hold a reference on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virInterfaceUndefine"/>virInterfaceUndefine ()</h3><pre class="programlisting">int virInterfaceUndefine (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br/>
|
||||
@ -1225,7 +1281,7 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNetworkGetXMLDesc"/>virNetworkGetXMLDesc ()</h3><pre class="programlisting">char * virNetworkGetXMLDesc (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br/> int flags)<br/>
|
||||
</pre><p>Provide an XML description of the network. The description may be reused later to relaunch the network with virNetworkCreateXML().</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>and OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>an OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNetworkLookupByName"/>virNetworkLookupByName ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> virNetworkLookupByName (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * name)<br/>
|
||||
</pre><p>Try to lookup a network on the given hypervisor based on its name.</p>
|
||||
@ -1304,7 +1360,7 @@ The content of this structure is not made public by the API.
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>pointer to the node device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeGetCellsFreeMemory"/>virNodeGetCellsFreeMemory ()</h3><pre class="programlisting">int virNodeGetCellsFreeMemory (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> unsigned long long * freeMems, <br/> int startCell, <br/> int maxCells)<br/>
|
||||
</pre><p>This call returns the amount of free memory in one or more NUMA cells. The @freeMems array must be allocated by the caller and will be filled with the amount of free memory in kilobytes for each cell requested, starting with startCell (in freeMems[0]), up to either (startCell + maxCells), or the number of additional cells in the node, whichever is smaller.</p>
|
||||
</pre><p>This call returns the amount of free memory in one or more NUMA cells. The @freeMems array must be allocated by the caller and will be filled with the amount of free memory in bytes for each cell requested, starting with startCell (in freeMems[0]), up to either (startCell + maxCells), or the number of additional cells in the node, whichever is smaller.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>freeMems</tt></i>:</span></td><td>pointer to the array of unsigned long long</td></tr><tr><td><span class="term"><i><tt>startCell</tt></i>:</span></td><td>index of first cell to return freeMems info on.</td></tr><tr><td><span class="term"><i><tt>maxCells</tt></i>:</span></td><td>Maximum number of cells for which freeMems information can be returned.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of entries filled in freeMems, or -1 in case of error.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeGetFreeMemory"/>virNodeGetFreeMemory ()</h3><pre class="programlisting">unsigned long long virNodeGetFreeMemory (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
@ -1326,6 +1382,66 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeNumOfDevices"/>virNodeNumOfDevices ()</h3><pre class="programlisting">int virNodeNumOfDevices (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * cap, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Provides the number of node devices. If the optional 'cap' argument is non-NULL, then the count will be restricted to devices with the specified capability</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>cap</tt></i>:</span></td><td>capability name</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of node devices or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretDefineXML"/>virSecretDefineXML ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> virSecretDefineXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xml, <br/> unsigned int flags)<br/>
|
||||
</pre><p>If XML specifies an UUID, locates the specified secret and replaces all attributes of the secret specified by UUID by attributes specified in xml (any attributes not specified in xml are discarded). Otherwise, creates a new secret with an automatically chosen UUID, and initializes its attributes from xml.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td><a href="libvirt-libvirt.html#virConnect">virConnect</a> connection</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>XML describing the secret.</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a the secret on success, NULL on failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretFree"/>virSecretFree ()</h3><pre class="programlisting">int virSecretFree (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br/>
|
||||
</pre><p>Release the secret handle. The underlying secret continues to exist.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>pointer to a secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretGetConnect"/>virSecretGetConnect ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virSecretGetConnect (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br/>
|
||||
</pre><p>Provides the connection pointer associated with a secret. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the secret object together.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretGetUUID"/>virSecretGetUUID ()</h3><pre class="programlisting">int virSecretGetUUID (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> unsigned char * uuid)<br/>
|
||||
</pre><p>Fetches the UUID of the secret.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>uuid</tt></i>:</span></td><td>buffer of <a href="libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a> bytes in size</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success with the uuid buffer being filled, or -1 upon failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretGetUUIDString"/>virSecretGetUUIDString ()</h3><pre class="programlisting">int virSecretGetUUIDString (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> char * buf)<br/>
|
||||
</pre><p>Get the UUID for a secret as string. For more information about UUID see RFC4122.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>a secret object</td></tr><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a> bytes array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretGetUsageID"/>virSecretGetUsageID ()</h3><pre class="programlisting">const char * virSecretGetUsageID (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br/>
|
||||
</pre><p>Get the unique identifier of the object with which this secret is to be used. The format of the identifier is dependant on the usage type of the secret. For a secret with a usage type of <a href="libvirt-libvirt.html#VIR_SECRET_USAGE_TYPE_VOLUME">VIR_SECRET_USAGE_TYPE_VOLUME</a> the identifier will be a fully qualfied path name. The identifiers are intended to be unique within the set of all secrets sharing the same usage type. ie, there shall only ever be one secret for each volume path.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>a secret object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a string identifying the object using the secret, or NULL upon error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretGetUsageType"/>virSecretGetUsageType ()</h3><pre class="programlisting">int virSecretGetUsageType (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br/>
|
||||
</pre><p>Get the type of object which uses this secret. The returned value is one of the constants defined in the <a href="libvirt-libvirt.html#virSecretUsageType">virSecretUsageType</a> enumeration. More values may be added to this enumeration in the future, so callers should expect to see usage types they do not explicitly know about.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>a secret object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a positive integer identifying the type of object, or -1 upon error.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretGetValue"/>virSecretGetValue ()</h3><pre class="programlisting">unsigned char * virSecretGetValue (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> size_t * value_size, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Fetches the value of a secret.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> connection</td></tr><tr><td><span class="term"><i><tt>value_size</tt></i>:</span></td><td>Place for storing size of the secret value</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the secret value on success, NULL on failure. The caller must free() the secret value.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretGetXMLDesc"/>virSecretGetXMLDesc ()</h3><pre class="programlisting">char * virSecretGetXMLDesc (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Fetches an XML document describing attributes of the secret.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the XML document on success, NULL on failure. The caller must free() the XML.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretLookupByUUID"/>virSecretLookupByUUID ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> virSecretLookupByUUID (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const unsigned char * uuid)<br/>
|
||||
</pre><p>Try to lookup a secret on the given hypervisor based on its UUID. Uses the 16 bytes of raw data to describe the UUID</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>uuid</tt></i>:</span></td><td>the raw UUID for the secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new secret object or NULL in case of failure. If the secret cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_SECRET">VIR_ERR_NO_SECRET</a> error is raised.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretLookupByUUIDString"/>virSecretLookupByUUIDString ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> virSecretLookupByUUIDString (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * uuidstr)<br/>
|
||||
</pre><p>Try to lookup a secret on the given hypervisor based on its UUID. Uses the printable string value to describe the UUID</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>uuidstr</tt></i>:</span></td><td>the string UUID for the secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new secret object or NULL in case of failure. If the secret cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_SECRET">VIR_ERR_NO_SECRET</a> error is raised.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretLookupByUsage"/>virSecretLookupByUsage ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> virSecretLookupByUsage (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> int usageType, <br/> const char * usageID)<br/>
|
||||
</pre><p>Try to lookup a secret on the given hypervisor based on its usage The usageID is unique within the set of secrets sharing the same usageType value.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>usageType</tt></i>:</span></td><td>the type of secret usage</td></tr><tr><td><span class="term"><i><tt>usageID</tt></i>:</span></td><td>identifier of the object using the secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new secret object or NULL in case of failure. If the secret cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_SECRET">VIR_ERR_NO_SECRET</a> error is raised.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretRef"/>virSecretRef ()</h3><pre class="programlisting">int virSecretRef (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br/>
|
||||
</pre><p>Increment the reference count on the secret. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virSecretFree">virSecretFree</a> to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a secret would increment the reference count.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>the secret to hold a reference on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretSetValue"/>virSecretSetValue ()</h3><pre class="programlisting">int virSecretSetValue (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br/> const unsigned char * value, <br/> size_t value_size, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Sets the value of a secret.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>Value of the secret</td></tr><tr><td><span class="term"><i><tt>value_size</tt></i>:</span></td><td>Size of the value</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecretUndefine"/>virSecretUndefine ()</h3><pre class="programlisting">int virSecretUndefine (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br/>
|
||||
</pre><p>Deletes the specified secret. This does not free the associated <a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> object.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolBuild"/>virStoragePoolBuild ()</h3><pre class="programlisting">int virStoragePoolBuild (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Build the underlying storage pool</p>
|
||||
@ -1421,7 +1537,7 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolUndefine"/>virStoragePoolUndefine ()</h3><pre class="programlisting">int virStoragePoolUndefine (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br/>
|
||||
</pre><p>Undefine an inactive storage pool</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStorageVolCreateXML"/>virStorageVolCreateXML ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> virStorageVolCreateXML (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> const char * xmldesc, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Create a storage volume within a pool based on an XML description. Not all pools support creation of volumes</p>
|
||||
|
@ -109,7 +109,10 @@ void <a href="#virConnResetLastError">virConnResetLastError</a> (<a href="libvi
|
||||
<a name="VIR_FROM_SECURITY">VIR_FROM_SECURITY</a> = 24 /* Error from security framework */
|
||||
<a name="VIR_FROM_VBOX">VIR_FROM_VBOX</a> = 25 /* Error from VirtualBox driver */
|
||||
<a name="VIR_FROM_INTERFACE">VIR_FROM_INTERFACE</a> = 26 /* Error when operating on an interface */
|
||||
<a name="VIR_FROM_ONE">VIR_FROM_ONE</a> = 27 /* Error from OpenNebula driver */
|
||||
<a name="VIR_FROM_ONE">VIR_FROM_ONE</a> = 27 /* Error from OpenNebula driver */
|
||||
<a name="VIR_FROM_ESX">VIR_FROM_ESX</a> = 28 /* Error from ESX driver */
|
||||
<a name="VIR_FROM_PHYP">VIR_FROM_PHYP</a> = 29 /* Error from IBM power hypervisor */
|
||||
<a name="VIR_FROM_SECRET">VIR_FROM_SECRET</a> = 30 /* Error from secret storage */
|
||||
};
|
||||
</pre><p/>
|
||||
</div>
|
||||
@ -181,7 +184,11 @@ void <a href="#virConnResetLastError">virConnResetLastError</a> (<a href="libvi
|
||||
<a name="VIR_ERR_OPERATION_INVALID">VIR_ERR_OPERATION_INVALID</a> = 55 /* operation is not applicable at this time */
|
||||
<a name="VIR_WAR_NO_INTERFACE">VIR_WAR_NO_INTERFACE</a> = 56 /* failed to start interface driver */
|
||||
<a name="VIR_ERR_NO_INTERFACE">VIR_ERR_NO_INTERFACE</a> = 57 /* interface driver not running */
|
||||
<a name="VIR_ERR_INVALID_INTERFACE">VIR_ERR_INVALID_INTERFACE</a> = 58 /* invalid interface object */
|
||||
<a name="VIR_ERR_INVALID_INTERFACE">VIR_ERR_INVALID_INTERFACE</a> = 58 /* invalid interface object */
|
||||
<a name="VIR_ERR_MULTIPLE_INTERFACES">VIR_ERR_MULTIPLE_INTERFACES</a> = 59 /* more than one matching interface found */
|
||||
<a name="VIR_WAR_NO_SECRET">VIR_WAR_NO_SECRET</a> = 60 /* failed to start secret storage */
|
||||
<a name="VIR_ERR_INVALID_SECRET">VIR_ERR_INVALID_SECRET</a> = 61 /* invalid secret */
|
||||
<a name="VIR_ERR_NO_SECRET">VIR_ERR_NO_SECRET</a> = 62 /* secret not found */
|
||||
};
|
||||
</pre><p/>
|
||||
</div>
|
||||
|
@ -75,35 +75,44 @@
|
||||
<ul><li><a href="ftp://libvirt.org/libvirt/">libvirt.org FTP server</a></li><li><a href="http://libvirt.org/sources/">libvirt.org HTTP server</a></li></ul>
|
||||
<h2>Hourly development snapshots</h2>
|
||||
<p>
|
||||
Once an hour, an automated snapshot is made from the latest CVS server
|
||||
Once an hour, an automated snapshot is made from the git server
|
||||
source tree. These snapshots should be usable, but we make no guarantees
|
||||
about their stability:
|
||||
</p>
|
||||
<ul><li><a href="ftp://libvirt.org/libvirt/libvirt-cvs-snapshot.tar.gz">libvirt.org FTP server</a></li><li><a href="http://libvirt.org/sources/libvirt-cvs-snapshot.tar.gz">libvirt.org HTTP server</a></li></ul>
|
||||
<h2>CVS repository access</h2>
|
||||
<p>
|
||||
The master source repository uses <a href="http://ximbiot.com/cvs/cvshome/docs/">CVS</a>
|
||||
and anonymous access is provided. Prior to accessing the server is it necessary
|
||||
to authenticate using the password <code>anoncvs</code>. This can be accomplished with the
|
||||
<code>cvs login</code> command:
|
||||
<ul><li><a href="ftp://libvirt.org/libvirt/libvirt-git-snapshot.tar.gz">libvirt.org FTP server</a></li><li><a href="http://libvirt.org/sources/libvirt-git-snapshot.tar.gz">libvirt.org HTTP server</a></li></ul>
|
||||
<h2>GIT source repository</h2>
|
||||
<p> Libvirt code source is now maintained in a <a href="http://git-scm.com/">git</a> repository available on
|
||||
<a href="http://libvirt.org/git/">libvirt.org</a>:
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
# cvs -d :pserver:anoncvs@libvirt.org:2401/data/cvs login
|
||||
git clone git://libvirt.org/libvirt.git
|
||||
</pre>
|
||||
<p>
|
||||
Once authenticated, a checkout can be obtained using
|
||||
It can also be browsed at
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
<a href="http://libvirt.org/git/?p=libvirt.git;a=summary">http://libvirt.org/git/?p=libvirt.git;a=summary</a>
|
||||
</pre>
|
||||
<h2>CVS repository access (Deprecated) </h2>
|
||||
<p>
|
||||
The master source repository used to be under <a href="http://ximbiot.com/cvs/cvshome/docs/">CVS</a>
|
||||
with anonymous access at:
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
# cvs -d :pserver:anoncvs@libvirt.org:2401/data/cvs co libvirt
|
||||
</pre>
|
||||
<p>
|
||||
The libvirt build process uses GNU autotools, so after obtaining a checkout
|
||||
it is necessary to generate the configure script and Makefile.in templates
|
||||
using the <code>autogen.sh</code> command. As an example, to do a complete
|
||||
build and install it into your home directory run:
|
||||
</p>
|
||||
<p> The server is maintainened temporarilly for existing uses, but all
|
||||
changes are only commited to git now and we expect to deprecate the CVS
|
||||
server during summer 2009. </p>
|
||||
<h2>Building from a source code checkout</h2>
|
||||
<p> The libvirt build process uses GNU autotools, so after obtaining a
|
||||
checkout it is necessary to generate the configure script and Makefile.in
|
||||
templates using the <code>autogen.sh</code> command, passing the extra
|
||||
arguments as as for configure. As an example, to do a complete build and
|
||||
install it into your home directory run:</p>
|
||||
<pre>
|
||||
|
||||
./autogen.sh --prefix=$HOME/usr
|
||||
@ -112,8 +121,12 @@
|
||||
</pre>
|
||||
<h2>GIT repository mirror</h2>
|
||||
<p>
|
||||
The CVS source repository is also mirrored using GIT, and is available
|
||||
for anonymous access via:
|
||||
Jim Mereying was maintaining a CVS to git mirror on
|
||||
<a href="http://git.et.redhat.com/?p=libvirt.git">git.et.redhat.com</a>.
|
||||
Existing users should migrate to the new libvirt.org git server, as the
|
||||
old one is now deprecated. For the sake of old links including now-
|
||||
rewritten SHA1s, we'll leave the old repository on-line for some time.
|
||||
It is available as:
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
@ -123,7 +136,6 @@
|
||||
It can also be browsed at
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
<a href="http://git.et.redhat.com/?p=libvirt.git;a=summary">http://git.et.redhat.com/?p=libvirt.git;a=summary</a>
|
||||
</pre>
|
||||
</div>
|
||||
|
@ -17,47 +17,52 @@
|
||||
<h2>Hourly development snapshots</h2>
|
||||
|
||||
<p>
|
||||
Once an hour, an automated snapshot is made from the latest CVS server
|
||||
Once an hour, an automated snapshot is made from the git server
|
||||
source tree. These snapshots should be usable, but we make no guarantees
|
||||
about their stability:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="ftp://libvirt.org/libvirt/libvirt-cvs-snapshot.tar.gz">libvirt.org FTP server</a></li>
|
||||
<li><a href="http://libvirt.org/sources/libvirt-cvs-snapshot.tar.gz">libvirt.org HTTP server</a></li>
|
||||
<li><a href="ftp://libvirt.org/libvirt/libvirt-git-snapshot.tar.gz">libvirt.org FTP server</a></li>
|
||||
<li><a href="http://libvirt.org/sources/libvirt-git-snapshot.tar.gz">libvirt.org HTTP server</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>CVS repository access</h2>
|
||||
|
||||
<p>
|
||||
The master source repository uses <a href="http://ximbiot.com/cvs/cvshome/docs/">CVS</a>
|
||||
and anonymous access is provided. Prior to accessing the server is it necessary
|
||||
to authenticate using the password <code>anoncvs</code>. This can be accomplished with the
|
||||
<code>cvs login</code> command:
|
||||
<h2>GIT source repository</h2>
|
||||
<p> Libvirt code source is now maintained in a <a
|
||||
href="http://git-scm.com/">git</a> repository available on
|
||||
<a href="http://libvirt.org/git/">libvirt.org</a>:
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
<pre>
|
||||
|
||||
# cvs -d :pserver:anoncvs@libvirt.org:2401/data/cvs login
|
||||
git clone git://libvirt.org/libvirt.git
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Once authenticated, a checkout can be obtained using
|
||||
<p>
|
||||
It can also be browsed at
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
<pre>
|
||||
<a href="http://libvirt.org/git/?p=libvirt.git;a=summary">http://libvirt.org/git/?p=libvirt.git;a=summary</a>
|
||||
</pre>
|
||||
<h2>CVS repository access (Deprecated) </h2>
|
||||
<p>
|
||||
The master source repository used to be under <a href="http://ximbiot.com/cvs/cvshome/docs/">CVS</a>
|
||||
with anonymous access at:
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
# cvs -d :pserver:anoncvs@libvirt.org:2401/data/cvs co libvirt
|
||||
</pre>
|
||||
<p> The server is maintainened temporarilly for existing uses, but all
|
||||
changes are only commited to git now and we expect to deprecate the CVS
|
||||
server during summer 2009. </p>
|
||||
|
||||
<p>
|
||||
The libvirt build process uses GNU autotools, so after obtaining a checkout
|
||||
it is necessary to generate the configure script and Makefile.in templates
|
||||
using the <code>autogen.sh</code> command. As an example, to do a complete
|
||||
build and install it into your home directory run:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<h2>Building from a source code checkout</h2>
|
||||
<p> The libvirt build process uses GNU autotools, so after obtaining a
|
||||
checkout it is necessary to generate the configure script and Makefile.in
|
||||
templates using the <code>autogen.sh</code> command, passing the extra
|
||||
arguments as as for configure. As an example, to do a complete build and
|
||||
install it into your home directory run:</p>
|
||||
<pre>
|
||||
|
||||
./autogen.sh --prefix=$HOME/usr
|
||||
make
|
||||
@ -67,21 +72,21 @@
|
||||
<h2>GIT repository mirror</h2>
|
||||
|
||||
<p>
|
||||
The CVS source repository is also mirrored using GIT, and is available
|
||||
for anonymous access via:
|
||||
Jim Mereying was maintaining a CVS to git mirror on
|
||||
<a href="http://git.et.redhat.com/?p=libvirt.git">git.et.redhat.com</a>.
|
||||
Existing users should migrate to the new libvirt.org git server, as the
|
||||
old one is now deprecated. For the sake of old links including now-
|
||||
rewritten SHA1s, we'll leave the old repository on-line for some time.
|
||||
It is available as:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
|
||||
git clone git://git.et.redhat.com/libvirt.git
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
It can also be browsed at
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
|
||||
<a href="http://git.et.redhat.com/?p=libvirt.git;a=summary">http://git.et.redhat.com/?p=libvirt.git;a=summary</a>
|
||||
</pre>
|
||||
|
||||
|
@ -142,6 +142,21 @@
|
||||
<a href="#prereq">Deployment pre-requisites</a>
|
||||
</li><li>
|
||||
<a href="#uris">Connections to QEMU driver</a>
|
||||
</li><li>
|
||||
<a href="#security">Driver security architecture</a>
|
||||
<ul><li>
|
||||
<a href="#securitydriver">Driver instances</a>
|
||||
</li><li>
|
||||
<a href="#securitydac">POSIX users/groups</a>
|
||||
</li><li>
|
||||
<a href="#securitycap">Linux process capabilities</a>
|
||||
</li><li>
|
||||
<a href="#securityselinux">SELinux basic confinement</a>
|
||||
</li><li>
|
||||
<a href="#securitysvirt">SELinux sVirt confinement</a>
|
||||
</li><li>
|
||||
<a href="#securityacl">Cgroups device ACLs</a>
|
||||
</li></ul>
|
||||
</li><li>
|
||||
<a href="#imex">Import and export of libvirt domain XML configs</a>
|
||||
<ul><li>
|
||||
@ -196,6 +211,271 @@
|
||||
qemu+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
qemu+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
<h2>
|
||||
<a name="security" id="security">Driver security architecture</a>
|
||||
</h2>
|
||||
<p>
|
||||
There are multiple layers to security in the QEMU driver, allowing for
|
||||
flexibility in the use of QEMU based virtual machines.
|
||||
</p>
|
||||
<h3>
|
||||
<a name="securitydriver" id="securitydriver">Driver instances</a>
|
||||
</h3>
|
||||
<p>
|
||||
As explained above there are two ways to access the QEMU driver
|
||||
in libvirt. The "qemu:///session" family of URIs connect to a
|
||||
libvirtd instance running as the same user/group ID as the client
|
||||
application. Thus the QEMU instances spawned from this driver will
|
||||
share the same privileges as the client application. The intended
|
||||
use case for this driver is desktop virtualization, with virtual
|
||||
machines storing their disk imags in the user's home directory and
|
||||
being managed from the local desktop login session.
|
||||
</p>
|
||||
<p>
|
||||
The "qemu:///system" family of URIs connect to a
|
||||
libvirtd instance running as the privileged system account 'root'.
|
||||
Thus the QEMU instances spawned from this driver may have much
|
||||
higher privileges than the client application managing them.
|
||||
The intended use case for this driver is server virtualization,
|
||||
where the virtual machines may need to be connected to host
|
||||
resources (block, PCI, USB, network devices) whose access requires
|
||||
elevated privileges.
|
||||
</p>
|
||||
<h3>
|
||||
<a name="securitydac" id="securitydac">POSIX users/groups</a>
|
||||
</h3>
|
||||
<p>
|
||||
In the "session" instance, the POSIX users/groups model restricts QEMU
|
||||
virtual machines (and libvirtd in general) to only have access to resources
|
||||
with the same user/group ID as the client application. There is no
|
||||
finer level of configuration possible for the "session" instances.
|
||||
</p>
|
||||
<p>
|
||||
In the "system" instance, libvirt releases from 0.7.0 onwards allow
|
||||
control over the user/group that the QEMU virtual machines are run
|
||||
as. A build of libvirt with no configuration parameters set will
|
||||
still run QEMU processes as root:root. It is possible to change
|
||||
this default by using the --with-qemu-user=$USERNAME and
|
||||
--with-qemu-group=$GROUPNAME arguments to 'configure' during
|
||||
build. It is strongly recommended that vendors build with both
|
||||
of these arguments set to 'qemu'. Regardless of this build time
|
||||
default, administrators can set a per-host default setting in
|
||||
the <code>/etc/libvirt/qemu.conf</code> configuration file via
|
||||
the <code>user=$USERNAME</code> and <code>group=$GROUPNAME</code>
|
||||
parameters. When a non-root user or group is configured, the
|
||||
libvirt QEMU driver will change uid/gid to match immediately
|
||||
before executing the QEMU binary for a virtual machine.
|
||||
</p>
|
||||
<p>
|
||||
If QEMU virtual machines from the "system" instance are being
|
||||
run as non-root, there will be greater restrictions on what
|
||||
host resources the QEMU process will be able to access. The
|
||||
libvirtd daemon will attempt to manage permissions on resources
|
||||
to minimise the likelihood of unintentional security denials,
|
||||
but the administrator / application developer must be aware of
|
||||
some of the consequences / restrictions.
|
||||
</p>
|
||||
<ul><li>
|
||||
<p>
|
||||
The directories <code>/var/run/libvirt/qemu/</code>,
|
||||
<code>/var/lib/libvirt/qemu/</code> and
|
||||
<code>/var/cache/libvirt/qemu/</code> must all have their
|
||||
ownership set to match the user / group ID that QEMU
|
||||
guests will be run as. If the vendor has set a non-root
|
||||
user/group for the QEMU driver at build time, the
|
||||
permissions should be set automatically at install time.
|
||||
If a host administrator customizes user/group in
|
||||
<code>/etc/libvirt/qemu.conf</code>, they will need to
|
||||
manually set the ownership on these directories.
|
||||
</p>
|
||||
</li><li>
|
||||
<p>
|
||||
When attaching USB and PCI devices to a QEMU guest,
|
||||
QEMU will need to access files in <code>/dev/bus/usb</code>
|
||||
and <code>/sys/bus/pci/devices</code> respectively. The libvirtd daemon
|
||||
will automatically set the ownership on specific devices
|
||||
that are assigned to a guest at start time. There should
|
||||
not be any need for administrator changes in this respect.
|
||||
</p>
|
||||
</li><li>
|
||||
<p>
|
||||
Any files/devices used as guest disk images must be
|
||||
accessible to the user/group ID that QEMU guests are
|
||||
configured to run as. The libvirtd daemon will automatically
|
||||
set the ownership of the file/device path to the correct
|
||||
user/group ID. Applications / administrators must be aware
|
||||
though that the parent directory permissions may still
|
||||
deny access. The directories containing disk images
|
||||
must either have their ownership set to match the user/group
|
||||
configured for QEMU, or their UNIX file permissions must
|
||||
have the 'execute/search' bit enabled for 'others'.
|
||||
</p>
|
||||
<p>
|
||||
The simplest option is the latter one, of just enabling
|
||||
the 'execute/search' bit. For any directory to be used
|
||||
for storing disk images, this can be achieved by running
|
||||
the following command on the directory itself, and any
|
||||
parent directories
|
||||
</p>
|
||||
<pre>
|
||||
chmod o+x /path/to/directory
|
||||
</pre>
|
||||
<p>
|
||||
In particular note that if using the "system" instance
|
||||
and attempting to store disk images in a user home
|
||||
directory, the default permissions on $HOME are typically
|
||||
too restrictive to allow access.
|
||||
</p>
|
||||
</li></ul>
|
||||
<h3>
|
||||
<a name="securitycap" id="securitycap">Linux process capabilities</a>
|
||||
</h3>
|
||||
<p>
|
||||
The libvirt QEMU driver has a build time option allowing it to use
|
||||
the <a href="http://people.redhat.com/sgrubb/libcap-ng/index.html">libcap-ng</a>
|
||||
library to manage process capabilities. If this build option is
|
||||
enabled, then the QEMU driver will use this to ensure that all
|
||||
process capabilities are dropped before executing a QEMU virtual
|
||||
machine. Process capabilities are what gives the 'root' account
|
||||
its high power, in particular the CAP_DAC_OVERRIDE capability
|
||||
is what allows a process running as 'root' to access files owned
|
||||
by any user.
|
||||
</p>
|
||||
<p>
|
||||
If the QEMU driver is configured to run virtual machines as non-root,
|
||||
then they will already loose all their process capabilities at time
|
||||
of startup. The Linux capability feature is thus aimed primarily at
|
||||
the scenario where the QEMU processes are running as root. In this
|
||||
case, before launching a QEMU virtual machine, libvirtd will use
|
||||
libcap-ng APIs to drop all process capabilities. It is important
|
||||
for administrators to note that this implies the QEMU process will
|
||||
<strong>only</strong> be able to access files owned by root, and
|
||||
not files owned by any other user.
|
||||
</p>
|
||||
<p>
|
||||
Thus, if a vendor / distributor has configured their libvirt package
|
||||
to run as 'qemu' by default, a number of changes will be required
|
||||
before an administrator can change a host to run guests as root.
|
||||
In particular it will be neccessary to change ownership on the
|
||||
directories <code>/var/run/libvirt/qemu/</code>,
|
||||
<code>/var/lib/libvirt/qemu/</code> and
|
||||
<code>/var/cache/libvirt/qemu/</code> back to root, in addition
|
||||
to changing the <code>/etc/libvirt/qemu.conf</code> settings.
|
||||
</p>
|
||||
<h3>
|
||||
<a name="securityselinux" id="securityselinux">SELinux basic confinement</a>
|
||||
</h3>
|
||||
<p>
|
||||
The basic SELinux protection for QEMU virtual machines is intended to
|
||||
protect the host OS from a compromised virtual machine process. There
|
||||
is no protection between guests.
|
||||
</p>
|
||||
<p>
|
||||
In the basic model, all QEMU virtual machines run under the confined
|
||||
domain <code>root:system_r:qemu_t</code>. It is required that any
|
||||
disk image assigned to a QEMU virtual machine is labelled with
|
||||
<code>system_u:object_r:virt_image_t</code>. In a default deployment,
|
||||
package vendors/distributor will typically ensure that the directory
|
||||
<code>/var/lib/libvirt/images</code> has this label, such that any
|
||||
disk images created in this directory will automatically inherit the
|
||||
correct labelling. If attempting to use disk images in another
|
||||
location, the user/administrator must ensure the directory has be
|
||||
given this requisite label. Likewise physical block devices must
|
||||
be labelled <code>system_u:object_r:virt_image_t</code>.
|
||||
</p>
|
||||
<p>
|
||||
Not all filesystems allow for labelling of individual files. In
|
||||
particular NFS, VFat and NTFS have no support for labelling. In
|
||||
these cases administrators must use the 'context' option when
|
||||
mounting the filesystem to set the default label to
|
||||
<code>system_u:object_r:virt_image_t</code>. In the case of
|
||||
NFS, there is an alternative option, of enabling the <code>virt_use_nfs</code>
|
||||
SELinux boolean.
|
||||
</p>
|
||||
<h3>
|
||||
<a name="securitysvirt" id="securitysvirt">SELinux sVirt confinement</a>
|
||||
</h3>
|
||||
<p>
|
||||
The SELinux sVirt protection for QEMU virtual machines builds to the
|
||||
basic level of protection, to also allow individual guests to be
|
||||
protected from each other.
|
||||
</p>
|
||||
<p>
|
||||
In the sVirt model, each QEMU virtual machine runs under its own
|
||||
confined domain, which is based on <code>system_u:system_r:svirt_t:s0</code>
|
||||
with a unique category appended, eg, <code>system_u:system_r:svirt_t:s0:c34,c44</code>.
|
||||
The rules are setup such that a domain can only access files which are
|
||||
labelled with the matching category level, eg
|
||||
<code>system_u:object_r:svirt_image_t:s0:c34,c44</code>. This prevents one
|
||||
QEMU process accessing any file resources that are prevent to another QEMU
|
||||
process.
|
||||
</p>
|
||||
<p>
|
||||
There are two ways of assigning labels to virtual machines under sVirt.
|
||||
In the default setup, if sVirt is enabled, guests will get an automatically
|
||||
assigned unique label each time they are booted. The libvirtd daemon will
|
||||
also automatically relabel exclusive access disk images to match this
|
||||
label. Disks that are marked as <shared> will get a generic
|
||||
label <code>system_u:system_r:svirt_image_t:s0</code> allowing all guests
|
||||
read/write access them, while disks marked as <readonly> will
|
||||
get a generic label <code>system_u:system_r:svirt_content_t:s0</code>
|
||||
which allows all guests read-only access.
|
||||
</p>
|
||||
<p>
|
||||
With statically assigned labels, the application should include the
|
||||
desired guest and file labels in the XML at time of creating the
|
||||
guest with libvirt. In this scenario the application is responsible
|
||||
for ensuring the disk images & similar resources are suitably
|
||||
labelled to match, libvirtd will not attempt any relabelling.
|
||||
</p>
|
||||
<p>
|
||||
If the sVirt security model is active, then the node capabilities
|
||||
XML will include its details. If a virtual machine is currently
|
||||
protected by the security model, then the guest XML will include
|
||||
its assigned labels. If enabled at compile time, the sVirt security
|
||||
model will always be activated if SELinux is available on the host
|
||||
OS. To disable sVirt, and revert to the basic level of SELinux
|
||||
protection (host protection only), the <code>/etc/libvirt/qemu.conf</code>
|
||||
file can be used to change the setting to <code>security_driver="none"</code>
|
||||
</p>
|
||||
<h3>
|
||||
<a name="securityacl" id="securityacl">Cgroups device ACLs</a>
|
||||
</h3>
|
||||
<p>
|
||||
Recent Linux kernels have a capability known as "cgroups" which is used
|
||||
for resource management. It is implemented via a number of "controllers",
|
||||
each controller covering a specific task/functional area. One of the
|
||||
available controllers is the "devices" controller, which is able to
|
||||
setup whitelists of block/character devices that a cgroup should be
|
||||
allowed to access. If the "devices" controller is mounted on a host,
|
||||
then libvirt will automatically create a dedicated cgroup for each
|
||||
QEMU virtual machine and setup the device whitelist so that the QEMU
|
||||
process can only access shared devices, and explicitly disks images
|
||||
backed by block devices.
|
||||
</p>
|
||||
<p>
|
||||
The list of shared devices a guest is allowed access to is
|
||||
</p>
|
||||
<pre>
|
||||
/dev/null, /dev/full, /dev/zero,
|
||||
/dev/random, /dev/urandom,
|
||||
/dev/ptmx, /dev/kvm, /dev/kqemu,
|
||||
/dev/rtc, /dev/hpet, /dev/net/tun
|
||||
</pre>
|
||||
<p>
|
||||
In the event of unanticipated needs arising, this can be customized
|
||||
via the <code>/etc/libvirt/qemu.conf</code> file.
|
||||
To mount the cgroups device controller, the following command
|
||||
should be run as root, prior to starting libvirtd
|
||||
</p>
|
||||
<pre>
|
||||
mkdir /dev/cgroup
|
||||
mount -t cgroup none /dev/cgroup -o devices
|
||||
</pre>
|
||||
<p>
|
||||
libvirt will then place each virtual machine in a cgroup at
|
||||
<code>/dev/cgroup/libvirt/qemu/$VMNAME/</code>
|
||||
</p>
|
||||
<h2>
|
||||
<a name="imex" id="imex">Import and export of libvirt domain XML configs</a>
|
||||
</h2>
|
||||
|
@ -54,6 +54,292 @@
|
||||
qemu+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
|
||||
<h2><a name="security">Driver security architecture</a></h2>
|
||||
|
||||
<p>
|
||||
There are multiple layers to security in the QEMU driver, allowing for
|
||||
flexibility in the use of QEMU based virtual machines.
|
||||
</p>
|
||||
|
||||
<h3><a name="securitydriver">Driver instances</a></h3>
|
||||
|
||||
<p>
|
||||
As explained above there are two ways to access the QEMU driver
|
||||
in libvirt. The "qemu:///session" family of URIs connect to a
|
||||
libvirtd instance running as the same user/group ID as the client
|
||||
application. Thus the QEMU instances spawned from this driver will
|
||||
share the same privileges as the client application. The intended
|
||||
use case for this driver is desktop virtualization, with virtual
|
||||
machines storing their disk imags in the user's home directory and
|
||||
being managed from the local desktop login session.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The "qemu:///system" family of URIs connect to a
|
||||
libvirtd instance running as the privileged system account 'root'.
|
||||
Thus the QEMU instances spawned from this driver may have much
|
||||
higher privileges than the client application managing them.
|
||||
The intended use case for this driver is server virtualization,
|
||||
where the virtual machines may need to be connected to host
|
||||
resources (block, PCI, USB, network devices) whose access requires
|
||||
elevated privileges.
|
||||
</p>
|
||||
|
||||
<h3><a name="securitydac">POSIX users/groups</a></h3>
|
||||
|
||||
<p>
|
||||
In the "session" instance, the POSIX users/groups model restricts QEMU
|
||||
virtual machines (and libvirtd in general) to only have access to resources
|
||||
with the same user/group ID as the client application. There is no
|
||||
finer level of configuration possible for the "session" instances.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the "system" instance, libvirt releases from 0.7.0 onwards allow
|
||||
control over the user/group that the QEMU virtual machines are run
|
||||
as. A build of libvirt with no configuration parameters set will
|
||||
still run QEMU processes as root:root. It is possible to change
|
||||
this default by using the --with-qemu-user=$USERNAME and
|
||||
--with-qemu-group=$GROUPNAME arguments to 'configure' during
|
||||
build. It is strongly recommended that vendors build with both
|
||||
of these arguments set to 'qemu'. Regardless of this build time
|
||||
default, administrators can set a per-host default setting in
|
||||
the <code>/etc/libvirt/qemu.conf</code> configuration file via
|
||||
the <code>user=$USERNAME</code> and <code>group=$GROUPNAME</code>
|
||||
parameters. When a non-root user or group is configured, the
|
||||
libvirt QEMU driver will change uid/gid to match immediately
|
||||
before executing the QEMU binary for a virtual machine.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If QEMU virtual machines from the "system" instance are being
|
||||
run as non-root, there will be greater restrictions on what
|
||||
host resources the QEMU process will be able to access. The
|
||||
libvirtd daemon will attempt to manage permissions on resources
|
||||
to minimise the likelihood of unintentional security denials,
|
||||
but the administrator / application developer must be aware of
|
||||
some of the consequences / restrictions.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<p>
|
||||
The directories <code>/var/run/libvirt/qemu/</code>,
|
||||
<code>/var/lib/libvirt/qemu/</code> and
|
||||
<code>/var/cache/libvirt/qemu/</code> must all have their
|
||||
ownership set to match the user / group ID that QEMU
|
||||
guests will be run as. If the vendor has set a non-root
|
||||
user/group for the QEMU driver at build time, the
|
||||
permissions should be set automatically at install time.
|
||||
If a host administrator customizes user/group in
|
||||
<code>/etc/libvirt/qemu.conf</code>, they will need to
|
||||
manually set the ownership on these directories.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
When attaching USB and PCI devices to a QEMU guest,
|
||||
QEMU will need to access files in <code>/dev/bus/usb</code>
|
||||
and <code>/sys/bus/pci/devices</code> respectively. The libvirtd daemon
|
||||
will automatically set the ownership on specific devices
|
||||
that are assigned to a guest at start time. There should
|
||||
not be any need for administrator changes in this respect.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Any files/devices used as guest disk images must be
|
||||
accessible to the user/group ID that QEMU guests are
|
||||
configured to run as. The libvirtd daemon will automatically
|
||||
set the ownership of the file/device path to the correct
|
||||
user/group ID. Applications / administrators must be aware
|
||||
though that the parent directory permissions may still
|
||||
deny access. The directories containing disk images
|
||||
must either have their ownership set to match the user/group
|
||||
configured for QEMU, or their UNIX file permissions must
|
||||
have the 'execute/search' bit enabled for 'others'.
|
||||
</p>
|
||||
<p>
|
||||
The simplest option is the latter one, of just enabling
|
||||
the 'execute/search' bit. For any directory to be used
|
||||
for storing disk images, this can be achieved by running
|
||||
the following command on the directory itself, and any
|
||||
parent directories
|
||||
</p>
|
||||
<pre>
|
||||
chmod o+x /path/to/directory
|
||||
</pre>
|
||||
<p>
|
||||
In particular note that if using the "system" instance
|
||||
and attempting to store disk images in a user home
|
||||
directory, the default permissions on $HOME are typically
|
||||
too restrictive to allow access.
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3><a name="securitycap">Linux process capabilities</a></h3>
|
||||
|
||||
<p>
|
||||
The libvirt QEMU driver has a build time option allowing it to use
|
||||
the <a href="http://people.redhat.com/sgrubb/libcap-ng/index.html">libcap-ng</a>
|
||||
library to manage process capabilities. If this build option is
|
||||
enabled, then the QEMU driver will use this to ensure that all
|
||||
process capabilities are dropped before executing a QEMU virtual
|
||||
machine. Process capabilities are what gives the 'root' account
|
||||
its high power, in particular the CAP_DAC_OVERRIDE capability
|
||||
is what allows a process running as 'root' to access files owned
|
||||
by any user.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If the QEMU driver is configured to run virtual machines as non-root,
|
||||
then they will already loose all their process capabilities at time
|
||||
of startup. The Linux capability feature is thus aimed primarily at
|
||||
the scenario where the QEMU processes are running as root. In this
|
||||
case, before launching a QEMU virtual machine, libvirtd will use
|
||||
libcap-ng APIs to drop all process capabilities. It is important
|
||||
for administrators to note that this implies the QEMU process will
|
||||
<strong>only</strong> be able to access files owned by root, and
|
||||
not files owned by any other user.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Thus, if a vendor / distributor has configured their libvirt package
|
||||
to run as 'qemu' by default, a number of changes will be required
|
||||
before an administrator can change a host to run guests as root.
|
||||
In particular it will be neccessary to change ownership on the
|
||||
directories <code>/var/run/libvirt/qemu/</code>,
|
||||
<code>/var/lib/libvirt/qemu/</code> and
|
||||
<code>/var/cache/libvirt/qemu/</code> back to root, in addition
|
||||
to changing the <code>/etc/libvirt/qemu.conf</code> settings.
|
||||
</p>
|
||||
|
||||
<h3><a name="securityselinux">SELinux basic confinement</a></h3>
|
||||
|
||||
<p>
|
||||
The basic SELinux protection for QEMU virtual machines is intended to
|
||||
protect the host OS from a compromised virtual machine process. There
|
||||
is no protection between guests.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the basic model, all QEMU virtual machines run under the confined
|
||||
domain <code>root:system_r:qemu_t</code>. It is required that any
|
||||
disk image assigned to a QEMU virtual machine is labelled with
|
||||
<code>system_u:object_r:virt_image_t</code>. In a default deployment,
|
||||
package vendors/distributor will typically ensure that the directory
|
||||
<code>/var/lib/libvirt/images</code> has this label, such that any
|
||||
disk images created in this directory will automatically inherit the
|
||||
correct labelling. If attempting to use disk images in another
|
||||
location, the user/administrator must ensure the directory has be
|
||||
given this requisite label. Likewise physical block devices must
|
||||
be labelled <code>system_u:object_r:virt_image_t</code>.
|
||||
</p>
|
||||
<p>
|
||||
Not all filesystems allow for labelling of individual files. In
|
||||
particular NFS, VFat and NTFS have no support for labelling. In
|
||||
these cases administrators must use the 'context' option when
|
||||
mounting the filesystem to set the default label to
|
||||
<code>system_u:object_r:virt_image_t</code>. In the case of
|
||||
NFS, there is an alternative option, of enabling the <code>virt_use_nfs</code>
|
||||
SELinux boolean.
|
||||
</p>
|
||||
|
||||
<h3><a name="securitysvirt">SELinux sVirt confinement</a></h3>
|
||||
|
||||
<p>
|
||||
The SELinux sVirt protection for QEMU virtual machines builds to the
|
||||
basic level of protection, to also allow individual guests to be
|
||||
protected from each other.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the sVirt model, each QEMU virtual machine runs under its own
|
||||
confined domain, which is based on <code>system_u:system_r:svirt_t:s0</code>
|
||||
with a unique category appended, eg, <code>system_u:system_r:svirt_t:s0:c34,c44</code>.
|
||||
The rules are setup such that a domain can only access files which are
|
||||
labelled with the matching category level, eg
|
||||
<code>system_u:object_r:svirt_image_t:s0:c34,c44</code>. This prevents one
|
||||
QEMU process accessing any file resources that are prevent to another QEMU
|
||||
process.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
There are two ways of assigning labels to virtual machines under sVirt.
|
||||
In the default setup, if sVirt is enabled, guests will get an automatically
|
||||
assigned unique label each time they are booted. The libvirtd daemon will
|
||||
also automatically relabel exclusive access disk images to match this
|
||||
label. Disks that are marked as <shared> will get a generic
|
||||
label <code>system_u:system_r:svirt_image_t:s0</code> allowing all guests
|
||||
read/write access them, while disks marked as <readonly> will
|
||||
get a generic label <code>system_u:system_r:svirt_content_t:s0</code>
|
||||
which allows all guests read-only access.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
With statically assigned labels, the application should include the
|
||||
desired guest and file labels in the XML at time of creating the
|
||||
guest with libvirt. In this scenario the application is responsible
|
||||
for ensuring the disk images & similar resources are suitably
|
||||
labelled to match, libvirtd will not attempt any relabelling.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If the sVirt security model is active, then the node capabilities
|
||||
XML will include its details. If a virtual machine is currently
|
||||
protected by the security model, then the guest XML will include
|
||||
its assigned labels. If enabled at compile time, the sVirt security
|
||||
model will always be activated if SELinux is available on the host
|
||||
OS. To disable sVirt, and revert to the basic level of SELinux
|
||||
protection (host protection only), the <code>/etc/libvirt/qemu.conf</code>
|
||||
file can be used to change the setting to <code>security_driver="none"</code>
|
||||
</p>
|
||||
|
||||
|
||||
<h3><a name="securityacl">Cgroups device ACLs</a></h3>
|
||||
|
||||
<p>
|
||||
Recent Linux kernels have a capability known as "cgroups" which is used
|
||||
for resource management. It is implemented via a number of "controllers",
|
||||
each controller covering a specific task/functional area. One of the
|
||||
available controllers is the "devices" controller, which is able to
|
||||
setup whitelists of block/character devices that a cgroup should be
|
||||
allowed to access. If the "devices" controller is mounted on a host,
|
||||
then libvirt will automatically create a dedicated cgroup for each
|
||||
QEMU virtual machine and setup the device whitelist so that the QEMU
|
||||
process can only access shared devices, and explicitly disks images
|
||||
backed by block devices.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The list of shared devices a guest is allowed access to is
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
/dev/null, /dev/full, /dev/zero,
|
||||
/dev/random, /dev/urandom,
|
||||
/dev/ptmx, /dev/kvm, /dev/kqemu,
|
||||
/dev/rtc, /dev/hpet, /dev/net/tun
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
In the event of unanticipated needs arising, this can be customized
|
||||
via the <code>/etc/libvirt/qemu.conf</code> file.
|
||||
To mount the cgroups device controller, the following command
|
||||
should be run as root, prior to starting libvirtd
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
mkdir /dev/cgroup
|
||||
mount -t cgroup none /dev/cgroup -o devices
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
libvirt will then place each virtual machine in a cgroup at
|
||||
<code>/dev/cgroup/libvirt/qemu/$VMNAME/</code>
|
||||
</p>
|
||||
|
||||
<h2><a name="imex">Import and export of libvirt domain XML configs</a></h2>
|
||||
|
||||
<p>The QEMU driver currently supports a single native
|
||||
|
@ -1,7 +0,0 @@
|
||||
.memdump
|
||||
Makefile.in
|
||||
Makefile
|
||||
.deps
|
||||
.libs
|
||||
info1
|
||||
suspend
|
@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
@ -12,4 +12,3 @@ domrestore.py - restore domU's from their saved files in a directory
|
||||
The XML files in this directory are examples of the XML format that libvirt
|
||||
expects, and will have to be adapted for your setup. They are only needed
|
||||
for domstart.py
|
||||
|
||||
|
@ -82,5 +82,3 @@ for d in devs:
|
||||
elif type == "bridge":
|
||||
print_xml("Source:", ctx, "source/@bridge")
|
||||
print_xml("MAC Addr:", ctx, "mac/@address")
|
||||
|
||||
|
||||
|
@ -32,7 +32,7 @@ if len(sys.argv) != 2:
|
||||
|
||||
(name, xmldesc) = read_domain(sys.argv[1])
|
||||
|
||||
conn = libvirt.openReadOnly(None)
|
||||
conn = libvirt.open(None)
|
||||
if conn == None:
|
||||
print 'Failed to open connection to the hypervisor'
|
||||
sys.exit(1)
|
||||
|
@ -62,6 +62,10 @@
|
||||
<div>
|
||||
<a title="The storage pool and volume XML format" class="inactive" href="formatstorage.html">Storage</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Storage volume encryption XML format" class="inactive" href="formatstorageencryption.html">Storage Encryption</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The driver capabilities XML format" class="inactive" href="formatcaps.html">Capabilities</a>
|
||||
@ -70,6 +74,10 @@
|
||||
<div>
|
||||
<a title="The host device XML format" class="inactive" href="formatnode.html">Node Devices</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The secret XML format" class="inactive" href="formatsecret.html">Secrets</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
|
@ -62,6 +62,10 @@
|
||||
<div>
|
||||
<a title="The storage pool and volume XML format" class="inactive" href="formatstorage.html">Storage</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Storage volume encryption XML format" class="inactive" href="formatstorageencryption.html">Storage Encryption</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<span class="active">Capabilities</span>
|
||||
@ -70,6 +74,10 @@
|
||||
<div>
|
||||
<a title="The host device XML format" class="inactive" href="formatnode.html">Node Devices</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The secret XML format" class="inactive" href="formatsecret.html">Secrets</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
|
@ -62,6 +62,10 @@
|
||||
<div>
|
||||
<a title="The storage pool and volume XML format" class="inactive" href="formatstorage.html">Storage</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Storage volume encryption XML format" class="inactive" href="formatstorageencryption.html">Storage Encryption</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The driver capabilities XML format" class="inactive" href="formatcaps.html">Capabilities</a>
|
||||
@ -70,6 +74,10 @@
|
||||
<div>
|
||||
<a title="The host device XML format" class="inactive" href="formatnode.html">Node Devices</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The secret XML format" class="inactive" href="formatsecret.html">Secrets</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
@ -180,6 +188,8 @@
|
||||
<a href="#elementsCharPTY">Pseudo TTY</a>
|
||||
</li><li>
|
||||
<a href="#elementsCharHost">Host device proxy</a>
|
||||
</li><li>
|
||||
<a href="#elementsCharPipe">Named pipe</a>
|
||||
</li><li>
|
||||
<a href="#elementsCharTCP">TCP client/server</a>
|
||||
</li><li>
|
||||
@ -328,13 +338,19 @@
|
||||
...
|
||||
<memory>524288</memory>
|
||||
<currentMemory>524288</currentMemory>
|
||||
<memoryBacking>
|
||||
<hugepages/>
|
||||
</memoryBacking>
|
||||
<vcpu>1</vcpu>
|
||||
...</pre>
|
||||
<dl><dt><code>memory</code></dt><dd>The maximum allocation of memory for the guest at boot time.
|
||||
The units for this value are kilobytes (i.e. blocks of 1024 bytes)</dd><dt><code>currentMemory</code></dt><dd>The actual allocation of memory for the guest. This value
|
||||
be less than the maximum allocation, to allow for ballooning
|
||||
up the guests memory on the fly. If this is omitted, it defaults
|
||||
to the same value as the <code>memory<code> element</code></code></dd><dt><code>vcpu</code></dt><dd>The content of this element defines the number of virtual
|
||||
to the same value as the <code>memory<code> element</code></code></dd><dt><code>memoryBacking</code></dt><dd>The optional <code>memoryBacking</code> element, may have an
|
||||
<code>hugepages</code> element set within it. This tells the
|
||||
hypervisor that the guest should have its memory allocated using
|
||||
hugepages instead of the normal native page size.</dd><dt><code>vcpu</code></dt><dd>The content of this element defines the number of virtual
|
||||
CPUs allocated for the guest OS.</dd></dl>
|
||||
<h3>
|
||||
<a name="elementsLifecycle" id="elementsLifecycle">Lifecycle control</a>
|
||||
@ -443,6 +459,9 @@
|
||||
<driver name="tap" type="aio">
|
||||
<source file='/var/lib/xen/images/fv0'/>
|
||||
<target dev='hda' bus='ide'/>
|
||||
<encryption type='...'>
|
||||
...
|
||||
</encryption>
|
||||
</disk>
|
||||
...</pre>
|
||||
<dl><dt><code>disk</code></dt><dd>The <code>disk</code> element is the main container for describing
|
||||
@ -468,6 +487,9 @@
|
||||
<code>driver</code> element allows them to be selected. The <code>name</code>
|
||||
attribute is the primary backend driver name, while the optional <code>type</code>
|
||||
attribute provides the sub-type. <span class="since">Since 0.1.8</span>
|
||||
</dd><dt><code>encryption</code></dt><dd>If present, specifies how the volume is encrypted. See
|
||||
the <a href="formatstorageencryption.html">Storage Encryption</a> page
|
||||
for more information.
|
||||
</dd></dl>
|
||||
<h4>
|
||||
<a name="elementsUSB" id="elementsUSB">USB and PCI devices</a>
|
||||
@ -877,19 +899,64 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<source path="/dev/ttyS0"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...</pre>
|
||||
<h5>
|
||||
<a name="elementsCharPipe" id="elementsCharPipe">Named pipe</a>
|
||||
</h5>
|
||||
<p>
|
||||
The character device writes output to a named pipe. See pipe(7) for
|
||||
more info.
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
<serial type="pipe">
|
||||
<source path="/tmp/mypipe"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...</pre>
|
||||
<h5>
|
||||
<a name="elementsCharTCP" id="elementsCharTCP">TCP client/server</a>
|
||||
</h5>
|
||||
<p>
|
||||
The character device acts as a TCP client connecting to a
|
||||
remote server, or as a server waiting for a client connection.
|
||||
remote server.
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
<serial type="tcp">
|
||||
<source mode="connect" host="0.0.0.0" service="2445"/>
|
||||
<wiremode type="telnet"/>
|
||||
<protocol type="raw"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...</pre>
|
||||
<p>
|
||||
Or as a TCP server waiting for a client connection.
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
<serial type="tcp">
|
||||
<source mode="bind" host="127.0.0.1" service="2445"/>
|
||||
<protocol type="raw"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...</pre>
|
||||
<p>
|
||||
Alternatively you can use telnet instead of raw TCP.
|
||||
</p>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
<serial type="tcp">
|
||||
<source mode="connect" host="0.0.0.0" service="2445"/>
|
||||
<protocol type="telnet"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...
|
||||
<serial type="tcp">
|
||||
<source mode="bind" host="127.0.0.1" service="2445"/>
|
||||
<protocol type="telnet"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...</pre>
|
||||
|
@ -176,6 +176,9 @@
|
||||
...
|
||||
<memory>524288</memory>
|
||||
<currentMemory>524288</currentMemory>
|
||||
<memoryBacking>
|
||||
<hugepages/>
|
||||
</memoryBacking>
|
||||
<vcpu>1</vcpu>
|
||||
...</pre>
|
||||
|
||||
@ -188,6 +191,11 @@
|
||||
be less than the maximum allocation, to allow for ballooning
|
||||
up the guests memory on the fly. If this is omitted, it defaults
|
||||
to the same value as the <code>memory<code> element</dd>
|
||||
<dt><code>memoryBacking</code></dt>
|
||||
<dd>The optional <code>memoryBacking</code> element, may have an
|
||||
<code>hugepages</code> element set within it. This tells the
|
||||
hypervisor that the guest should have its memory allocated using
|
||||
hugepages instead of the normal native page size.</dd>
|
||||
<dt><code>vcpu</code></dt>
|
||||
<dd>The content of this element defines the number of virtual
|
||||
CPUs allocated for the guest OS.</dd>
|
||||
@ -338,6 +346,9 @@
|
||||
<driver name="tap" type="aio">
|
||||
<source file='/var/lib/xen/images/fv0'/>
|
||||
<target dev='hda' bus='ide'/>
|
||||
<encryption type='...'>
|
||||
...
|
||||
</encryption>
|
||||
</disk>
|
||||
...</pre>
|
||||
|
||||
@ -373,6 +384,11 @@
|
||||
attribute is the primary backend driver name, while the optional <code>type</code>
|
||||
attribute provides the sub-type. <span class="since">Since 0.1.8</span>
|
||||
</dd>
|
||||
<dt><code>encryption</code></dt>
|
||||
<dd>If present, specifies how the volume is encrypted. See
|
||||
the <a href="formatstorageencryption.html">Storage Encryption</a> page
|
||||
for more information.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h4><a name="elementsUSB">USB and PCI devices</a></h4>
|
||||
@ -839,18 +855,65 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
</serial>
|
||||
...</pre>
|
||||
|
||||
<h5><a name="elementsCharPipe">Named pipe</a></h5>
|
||||
|
||||
<p>
|
||||
The character device writes output to a named pipe. See pipe(7) for
|
||||
more info.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
...
|
||||
<serial type="pipe">
|
||||
<source path="/tmp/mypipe"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...</pre>
|
||||
|
||||
<h5><a name="elementsCharTCP">TCP client/server</a></h5>
|
||||
|
||||
<p>
|
||||
The character device acts as a TCP client connecting to a
|
||||
remote server, or as a server waiting for a client connection.
|
||||
remote server.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
...
|
||||
<serial type="tcp">
|
||||
<source mode="connect" host="0.0.0.0" service="2445"/>
|
||||
<wiremode type="telnet"/>
|
||||
<protocol type="raw"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...</pre>
|
||||
|
||||
<p>
|
||||
Or as a TCP server waiting for a client connection.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
...
|
||||
<serial type="tcp">
|
||||
<source mode="bind" host="127.0.0.1" service="2445"/>
|
||||
<protocol type="raw"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...</pre>
|
||||
|
||||
<p>
|
||||
Alternatively you can use telnet instead of raw TCP.
|
||||
<p>
|
||||
|
||||
<pre>
|
||||
...
|
||||
<serial type="tcp">
|
||||
<source mode="connect" host="0.0.0.0" service="2445"/>
|
||||
<protocol type="telnet"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...
|
||||
<serial type="tcp">
|
||||
<source mode="bind" host="127.0.0.1" service="2445"/>
|
||||
<protocol type="telnet"/>
|
||||
<target port="1"/>
|
||||
</serial>
|
||||
...</pre>
|
||||
|
@ -62,6 +62,10 @@
|
||||
<div>
|
||||
<a title="The storage pool and volume XML format" class="inactive" href="formatstorage.html">Storage</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Storage volume encryption XML format" class="inactive" href="formatstorageencryption.html">Storage Encryption</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The driver capabilities XML format" class="inactive" href="formatcaps.html">Capabilities</a>
|
||||
@ -70,6 +74,10 @@
|
||||
<div>
|
||||
<a title="The host device XML format" class="inactive" href="formatnode.html">Node Devices</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The secret XML format" class="inactive" href="formatsecret.html">Secrets</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
|
@ -62,6 +62,10 @@
|
||||
<div>
|
||||
<a title="The storage pool and volume XML format" class="inactive" href="formatstorage.html">Storage</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Storage volume encryption XML format" class="inactive" href="formatstorageencryption.html">Storage Encryption</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The driver capabilities XML format" class="inactive" href="formatcaps.html">Capabilities</a>
|
||||
@ -70,6 +74,10 @@
|
||||
<div>
|
||||
<span class="active">Node Devices</span>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The secret XML format" class="inactive" href="formatsecret.html">Secrets</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
|
187
docs/formatsecret.html
Normal file
187
docs/formatsecret.html
Normal file
@ -0,0 +1,187 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<!--
|
||||
This file is autogenerated from formatsecret.html.in
|
||||
Do not edit this file. Changes will be lost.
|
||||
-->
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
|
||||
<link rel="stylesheet" type="text/css" href="main.css" />
|
||||
<link rel="SHORTCUT ICON" href="32favicon.png" />
|
||||
<title>libvirt: Secret XML format</title>
|
||||
<meta name="description" content="libvirt, virtualization, virtualization API" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id="headerLogo"></div>
|
||||
<div id="headerSearch">
|
||||
<form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><div>
|
||||
<input id="query" name="query" type="text" size="12" value="" />
|
||||
<input id="submit" name="submit" type="submit" value="Search" />
|
||||
</div></form>
|
||||
</div>
|
||||
</div>
|
||||
<div id="body">
|
||||
<div id="menu">
|
||||
<ul class="l0"><li>
|
||||
<div>
|
||||
<a title="Front page of the libvirt website" class="inactive" href="index.html">Home</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Details of new features and bugs fixed in each release" class="inactive" href="news.html">News</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Get the latest source releases, binary builds and get access to the source repository" class="inactive" href="downloads.html">Downloads</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Information for users, administrators and developers" class="active" href="docs.html">Documentation</a>
|
||||
<ul class="l1"><li>
|
||||
<div>
|
||||
<a title="Information about deploying and using libvirt" class="inactive" href="deployment.html">Deployment</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Overview of the logical subsystems in the libvirt API" class="inactive" href="intro.html">Architecture</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Description of the XML formats used in libvirt" class="active" href="format.html">XML format</a>
|
||||
<ul class="l2"><li>
|
||||
<div>
|
||||
<a title="The domain XML format" class="inactive" href="formatdomain.html">Domains</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The virtual network XML format" class="inactive" href="formatnetwork.html">Networks</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The storage pool and volume XML format" class="inactive" href="formatstorage.html">Storage</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Storage volume encryption XML format" class="inactive" href="formatstorageencryption.html">Storage Encryption</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The driver capabilities XML format" class="inactive" href="formatcaps.html">Capabilities</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The host device XML format" class="inactive" href="formatnode.html">Node Devices</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<span class="active">Secrets</span>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Hypervisor specific driver information" class="inactive" href="drivers.html">Drivers</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Reference manual for the C public API" class="inactive" href="html/index.html">API reference</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Bindings of the libvirt API for other languages" class="inactive" href="bindings.html">Language bindings</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Working on the internals of libvirt API, driver and daemon code" class="inactive" href="internals.html">Internals</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="User contributed content" class="inactive" href="http://wiki.libvirt.org">Wiki</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Frequently asked questions" class="inactive" href="FAQ.html">FAQ</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="How and where to report bugs and request features" class="inactive" href="bugs.html">Bug reports</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="How to contact the developers via email and IRC" class="inactive" href="contact.html">Contact</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Miscellaneous links of interest related to libvirt" class="inactive" href="relatedlinks.html">Related Links</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Overview of all content on the website" class="inactive" href="sitemap.html">Sitemap</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
<div id="content">
|
||||
<h1>Secret XML format</h1>
|
||||
<ul><li>
|
||||
<a href="#SecretAttributes">Secret XML</a>
|
||||
</li><li>
|
||||
<a href="#example">Example</a>
|
||||
</li></ul>
|
||||
<h2>
|
||||
<a name="SecretAttributes" id="SecretAttributes">Secret XML</a>
|
||||
</h2>
|
||||
<p>
|
||||
Secrets stored by libvirt may have attributes associated with them, using
|
||||
the <code>secret</code> element. The <code>secret</code> element has two
|
||||
optional attributes, each with values '<code>yes</code>' and
|
||||
'<code>no</code>', and defaulting to '<code>no</code>':
|
||||
</p>
|
||||
<dl><dt><code>ephemeral</code></dt><dd>This secret must only be kept in memory, never stored persistently.
|
||||
</dd><dt><code>private</code></dt><dd>The value of the secret must not be revealed to any caller of libvirt,
|
||||
nor to any other node.
|
||||
</dd></dl>
|
||||
<p>
|
||||
The top-level <code>secret</code> element may contain the following
|
||||
elements:
|
||||
</p>
|
||||
<dl><dt><code>uuid</code></dt><dd>
|
||||
An unique identifier for this secret (not necessarily in the UUID
|
||||
format). If omitted when defining a new secret, a random UUID is
|
||||
generated.
|
||||
</dd><dt><code>description</code></dt><dd>A human-readable description of the purpose of the secret.
|
||||
</dd><dt><code>usage</code></dt><dd>
|
||||
Specifies what this secret is used for. A mandatory
|
||||
<code>type</code> attribute specifies the usage category, currently
|
||||
only <code>volume</code> is defined. Specific usage categories are
|
||||
described below.
|
||||
</dd></dl>
|
||||
<h3>Usage type "volume"</h3>
|
||||
<p>
|
||||
This secret is associated with a volume, and it is safe to delete the
|
||||
secret after the volume is deleted. The <code><usage
|
||||
type='volume'></code> element must contain a
|
||||
single <code>volume</code> element that specifies the key of the volume
|
||||
this secret is associated with.
|
||||
</p>
|
||||
<h2>
|
||||
<a name="example" id="example">Example</a>
|
||||
</h2>
|
||||
<pre>
|
||||
<secret ephemeral='no' private='yes'>
|
||||
<description>LUKS passphrase for the main hard drive of our mail server</description>
|
||||
<usage type='volume'>
|
||||
<volume>/var/lib/libvirt/images/mail.img</volume>
|
||||
</usage>
|
||||
</secret></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<p id="sponsor">
|
||||
Sponsored by:<br /><a href="http://et.redhat.com/"><img src="et.png" alt="Project sponsored by Red Hat Emerging Technology" /></a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
67
docs/formatsecret.html.in
Normal file
67
docs/formatsecret.html.in
Normal file
@ -0,0 +1,67 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1>Secret XML format</h1>
|
||||
|
||||
<ul id="toc"></ul>
|
||||
|
||||
<h2><a name="SecretAttributes">Secret XML</a></h2>
|
||||
|
||||
<p>
|
||||
Secrets stored by libvirt may have attributes associated with them, using
|
||||
the <code>secret</code> element. The <code>secret</code> element has two
|
||||
optional attributes, each with values '<code>yes</code>' and
|
||||
'<code>no</code>', and defaulting to '<code>no</code>':
|
||||
</p>
|
||||
<dl>
|
||||
<dt><code>ephemeral</code></dt>
|
||||
<dd>This secret must only be kept in memory, never stored persistently.
|
||||
</dd>
|
||||
<dt><code>private</code></dt>
|
||||
<dd>The value of the secret must not be revealed to any caller of libvirt,
|
||||
nor to any other node.
|
||||
</dd>
|
||||
</dl>
|
||||
<p>
|
||||
The top-level <code>secret</code> element may contain the following
|
||||
elements:
|
||||
</p>
|
||||
<dl>
|
||||
<dt><code>uuid</code></dt>
|
||||
<dd>
|
||||
An unique identifier for this secret (not necessarily in the UUID
|
||||
format). If omitted when defining a new secret, a random UUID is
|
||||
generated.
|
||||
</dd>
|
||||
<dt><code>description</code></dt>
|
||||
<dd>A human-readable description of the purpose of the secret.
|
||||
</dd>
|
||||
<dt><code>usage</code></dt>
|
||||
<dd>
|
||||
Specifies what this secret is used for. A mandatory
|
||||
<code>type</code> attribute specifies the usage category, currently
|
||||
only <code>volume</code> is defined. Specific usage categories are
|
||||
described below.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Usage type "volume"</h3>
|
||||
|
||||
<p>
|
||||
This secret is associated with a volume, and it is safe to delete the
|
||||
secret after the volume is deleted. The <code><usage
|
||||
type='volume'></code> element must contain a
|
||||
single <code>volume</code> element that specifies the key of the volume
|
||||
this secret is associated with.
|
||||
</p>
|
||||
|
||||
<h2><a name="example">Example</a></h2>
|
||||
|
||||
<pre>
|
||||
<secret ephemeral='no' private='yes'>
|
||||
<description>LUKS passphrase for the main hard drive of our mail server</description>
|
||||
<usage type='volume'>
|
||||
<volume>/var/lib/libvirt/images/mail.img</volume>
|
||||
</usage>
|
||||
</secret></pre>
|
||||
</body>
|
||||
</html>
|
@ -62,6 +62,10 @@
|
||||
<div>
|
||||
<span class="active">Storage</span>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Storage volume encryption XML format" class="inactive" href="formatstorageencryption.html">Storage Encryption</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The driver capabilities XML format" class="inactive" href="formatcaps.html">Capabilities</a>
|
||||
@ -70,6 +74,10 @@
|
||||
<div>
|
||||
<a title="The host device XML format" class="inactive" href="formatnode.html">Node Devices</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The secret XML format" class="inactive" href="formatsecret.html">Secrets</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
@ -244,6 +252,9 @@
|
||||
<mode>0744</mode>
|
||||
<label>virt_image_t</label>
|
||||
</permissions>
|
||||
<encryption type='...'>
|
||||
...
|
||||
</encryption>
|
||||
</target>
|
||||
</pool></pre>
|
||||
<dl><dt><code>path</code></dt><dd>Provides the location at which the pool will be mapped into
|
||||
@ -266,6 +277,9 @@
|
||||
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>encryption</code></dt><dd>If present, specifies how the volume is encrypted. See
|
||||
the <a href="formatstorageencryption.html">Storage Encryption</a> page
|
||||
for more information.
|
||||
</dd></dl>
|
||||
<h3>
|
||||
<a name="StoragePoolExtents" id="StoragePoolExtents">Device extents</a>
|
||||
|
@ -124,6 +124,9 @@
|
||||
<mode>0744</mode>
|
||||
<label>virt_image_t</label>
|
||||
</permissions>
|
||||
<encryption type='...'>
|
||||
...
|
||||
</encryption>
|
||||
</target>
|
||||
</pool></pre>
|
||||
|
||||
@ -152,6 +155,11 @@
|
||||
contains the MAC (eg SELinux) label string.
|
||||
<span class="since">Since 0.4.1</span>
|
||||
</dd>
|
||||
<dt><code>encryption</code></dt>
|
||||
<dd>If present, specifies how the volume is encrypted. See
|
||||
the <a href="formatstorageencryption.html">Storage Encryption</a> page
|
||||
for more information.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h3><a name="StoragePoolExtents">Device extents</a></h3>
|
||||
|
209
docs/formatstorageencryption.html
Normal file
209
docs/formatstorageencryption.html
Normal file
@ -0,0 +1,209 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<!--
|
||||
This file is autogenerated from formatstorageencryption.html.in
|
||||
Do not edit this file. Changes will be lost.
|
||||
-->
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
|
||||
<link rel="stylesheet" type="text/css" href="main.css" />
|
||||
<link rel="SHORTCUT ICON" href="32favicon.png" />
|
||||
<title>libvirt: Storage volume encryption XML format</title>
|
||||
<meta name="description" content="libvirt, virtualization, virtualization API" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id="headerLogo"></div>
|
||||
<div id="headerSearch">
|
||||
<form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><div>
|
||||
<input id="query" name="query" type="text" size="12" value="" />
|
||||
<input id="submit" name="submit" type="submit" value="Search" />
|
||||
</div></form>
|
||||
</div>
|
||||
</div>
|
||||
<div id="body">
|
||||
<div id="menu">
|
||||
<ul class="l0"><li>
|
||||
<div>
|
||||
<a title="Front page of the libvirt website" class="inactive" href="index.html">Home</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Details of new features and bugs fixed in each release" class="inactive" href="news.html">News</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Get the latest source releases, binary builds and get access to the source repository" class="inactive" href="downloads.html">Downloads</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Information for users, administrators and developers" class="active" href="docs.html">Documentation</a>
|
||||
<ul class="l1"><li>
|
||||
<div>
|
||||
<a title="Information about deploying and using libvirt" class="inactive" href="deployment.html">Deployment</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Overview of the logical subsystems in the libvirt API" class="inactive" href="intro.html">Architecture</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Description of the XML formats used in libvirt" class="active" href="format.html">XML format</a>
|
||||
<ul class="l2"><li>
|
||||
<div>
|
||||
<a title="The domain XML format" class="inactive" href="formatdomain.html">Domains</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The virtual network XML format" class="inactive" href="formatnetwork.html">Networks</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The storage pool and volume XML format" class="inactive" href="formatstorage.html">Storage</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<span class="active">Storage Encryption</span>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The driver capabilities XML format" class="inactive" href="formatcaps.html">Capabilities</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The host device XML format" class="inactive" href="formatnode.html">Node Devices</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The secret XML format" class="inactive" href="formatsecret.html">Secrets</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Hypervisor specific driver information" class="inactive" href="drivers.html">Drivers</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Reference manual for the C public API" class="inactive" href="html/index.html">API reference</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Bindings of the libvirt API for other languages" class="inactive" href="bindings.html">Language bindings</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Working on the internals of libvirt API, driver and daemon code" class="inactive" href="internals.html">Internals</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="User contributed content" class="inactive" href="http://wiki.libvirt.org">Wiki</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Frequently asked questions" class="inactive" href="FAQ.html">FAQ</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="How and where to report bugs and request features" class="inactive" href="bugs.html">Bug reports</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="How to contact the developers via email and IRC" class="inactive" href="contact.html">Contact</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Miscellaneous links of interest related to libvirt" class="inactive" href="relatedlinks.html">Related Links</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Overview of all content on the website" class="inactive" href="sitemap.html">Sitemap</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
<div id="content">
|
||||
<h1>Storage volume encryption XML format</h1>
|
||||
<ul><li>
|
||||
<a href="#StorageEncryption">Storage volume encryption XML</a>
|
||||
<ul><li>
|
||||
<a href="#StorageEncryptionDefault">"default" format</a>
|
||||
</li><li>
|
||||
<a href="#StorageEncryptionQcow">"qcow" format</a>
|
||||
</li></ul>
|
||||
</li><li>
|
||||
<a href="#example">Example</a>
|
||||
</li></ul>
|
||||
<h2>
|
||||
<a name="StorageEncryption" id="StorageEncryption">Storage volume encryption XML</a>
|
||||
</h2>
|
||||
<p>
|
||||
Storage volumes may be encrypted, the XML snippet described below is used
|
||||
to represent the details of the encryption. It can be used as a part
|
||||
of a domain or storage configuration.
|
||||
</p>
|
||||
<p>
|
||||
The top-level tag of volume encryption specification
|
||||
is <code>encryption</code>, with a mandatory
|
||||
attribute <code>format</code>. Currently defined values
|
||||
of <code>format</code> are <code>default</code> and <code>qcow</code>.
|
||||
Each value of <code>format</code> implies some expectations about the
|
||||
content of the <code>encryption</code> tag. Other format values may be
|
||||
defined in the future.
|
||||
</p>
|
||||
<p>
|
||||
The <code>encryption</code> tag can currently contain a sequence of
|
||||
<code>secret</code> tags, each with mandatory attributes <code>type</code>
|
||||
and <code>uuid</code>. The only currently defined value of
|
||||
<code>type</code> is <code>passphrase</code>. <code>uuid</code>
|
||||
refers to a secret known to libvirt. libvirt can use a secret value
|
||||
previously set using <code>virSecretSetValue()</code>, or, if supported
|
||||
by the particular volume format and driver, automatically generate a
|
||||
secret value at the time of volume creation, and store it using the
|
||||
specified <code>uuid</code>.
|
||||
</p>
|
||||
<p>
|
||||
</p>
|
||||
<h3>
|
||||
<a name="StorageEncryptionDefault" id="StorageEncryptionDefault">"default" format</a>
|
||||
</h3>
|
||||
<p>
|
||||
<code><encryption type="default"/></code> can be specified only
|
||||
when creating a volume. If the volume is successfully created, the
|
||||
encryption formats, parameters and secrets will be auto-generated by
|
||||
libvirt and the attached <code>encryption</code> tag will be updated.
|
||||
The unmodified contents of the <code>encryption</code> tag can be used
|
||||
in later operations with the volume, or when setting up a domain that
|
||||
uses the volume.
|
||||
</p>
|
||||
<h3>
|
||||
<a name="StorageEncryptionQcow" id="StorageEncryptionQcow">"qcow" format</a>
|
||||
</h3>
|
||||
<p>
|
||||
The <code>qcow</code> format specifies that the built-in encryption
|
||||
support in <code>qcow</code>- or <code>qcow2</code>-formatted volume
|
||||
images should be used. A single
|
||||
<code><secret type='passphrase'></code> element is expected. If
|
||||
the <code>secret</code> element is not present during volume creation,
|
||||
a secret is automatically generated and attached to the volume.
|
||||
</p>
|
||||
<h2>
|
||||
<a name="example" id="example">Example</a>
|
||||
</h2>
|
||||
<p>
|
||||
Here is a simple example, specifying use of the <code>qcow</code> format:
|
||||
</p>
|
||||
<pre>
|
||||
<encryption format='qcow'>
|
||||
<secret type='passphrase' uuid='c1f11a6d-8c5d-4a3e-ac7a-4e171c5e0d4a' />
|
||||
</encryption></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<p id="sponsor">
|
||||
Sponsored by:<br /><a href="http://et.redhat.com/"><img src="et.png" alt="Project sponsored by Red Hat Emerging Technology" /></a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
65
docs/formatstorageencryption.html.in
Normal file
65
docs/formatstorageencryption.html.in
Normal file
@ -0,0 +1,65 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1>Storage volume encryption XML format</h1>
|
||||
|
||||
<ul id="toc"></ul>
|
||||
|
||||
<h2><a name="StorageEncryption">Storage volume encryption XML</a></h2>
|
||||
|
||||
<p>
|
||||
Storage volumes may be encrypted, the XML snippet described below is used
|
||||
to represent the details of the encryption. It can be used as a part
|
||||
of a domain or storage configuration.
|
||||
</p>
|
||||
<p>
|
||||
The top-level tag of volume encryption specification
|
||||
is <code>encryption</code>, with a mandatory
|
||||
attribute <code>format</code>. Currently defined values
|
||||
of <code>format</code> are <code>default</code> and <code>qcow</code>.
|
||||
Each value of <code>format</code> implies some expectations about the
|
||||
content of the <code>encryption</code> tag. Other format values may be
|
||||
defined in the future.
|
||||
</p>
|
||||
<p>
|
||||
The <code>encryption</code> tag can currently contain a sequence of
|
||||
<code>secret</code> tags, each with mandatory attributes <code>type</code>
|
||||
and <code>uuid</code>. The only currently defined value of
|
||||
<code>type</code> is <code>passphrase</code>. <code>uuid</code>
|
||||
refers to a secret known to libvirt. libvirt can use a secret value
|
||||
previously set using <code>virSecretSetValue()</code>, or, if supported
|
||||
by the particular volume format and driver, automatically generate a
|
||||
secret value at the time of volume creation, and store it using the
|
||||
specified <code>uuid</code>.
|
||||
<p>
|
||||
<h3><a name="StorageEncryptionDefault">"default" format</a></h3>
|
||||
<p>
|
||||
<code><encryption type="default"/></code> can be specified only
|
||||
when creating a volume. If the volume is successfully created, the
|
||||
encryption formats, parameters and secrets will be auto-generated by
|
||||
libvirt and the attached <code>encryption</code> tag will be updated.
|
||||
The unmodified contents of the <code>encryption</code> tag can be used
|
||||
in later operations with the volume, or when setting up a domain that
|
||||
uses the volume.
|
||||
</p>
|
||||
<h3><a name="StorageEncryptionQcow">"qcow" format</a></h3>
|
||||
<p>
|
||||
The <code>qcow</code> format specifies that the built-in encryption
|
||||
support in <code>qcow</code>- or <code>qcow2</code>-formatted volume
|
||||
images should be used. A single
|
||||
<code><secret type='passphrase'></code> element is expected. If
|
||||
the <code>secret</code> element is not present during volume creation,
|
||||
a secret is automatically generated and attached to the volume.
|
||||
</p>
|
||||
|
||||
<h2><a name="example">Example</a></h2>
|
||||
|
||||
<p>
|
||||
Here is a simple example, specifying use of the <code>qcow</code> format:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<encryption format='qcow'>
|
||||
<secret type='passphrase' uuid='c1f11a6d-8c5d-4a3e-ac7a-4e171c5e0d4a' />
|
||||
</encryption></pre>
|
||||
</body>
|
||||
</html>
|
@ -57,6 +57,9 @@ typedef <a href="libvirt-libvirt.html#virNodeInfo">virNodeInfo</a> * <a name="vi
|
||||
typedef struct _virSchedParameter <a href="#virSchedParameter">virSchedParameter</a>
|
||||
typedef <a href="libvirt-libvirt.html#virSchedParameter">virSchedParameter</a> * <a name="virSchedParameterPtr" id="virSchedParameterPtr">virSchedParameterPtr</a>
|
||||
typedef enum <a href="#virSchedParameterType">virSchedParameterType</a>
|
||||
typedef struct _virSecret <a href="#virSecret">virSecret</a>
|
||||
typedef <a href="libvirt-libvirt.html#virSecret">virSecret</a> * <a name="virSecretPtr" id="virSecretPtr">virSecretPtr</a>
|
||||
typedef enum <a href="#virSecretUsageType">virSecretUsageType</a>
|
||||
typedef struct _virSecurityLabel <a href="#virSecurityLabel">virSecurityLabel</a>
|
||||
typedef <a href="libvirt-libvirt.html#virSecurityLabel">virSecurityLabel</a> * <a name="virSecurityLabelPtr" id="virSecurityLabelPtr">virSecurityLabelPtr</a>
|
||||
typedef struct _virSecurityModel <a href="#virSecurityModel">virSecurityModel</a>
|
||||
@ -96,18 +99,22 @@ const char * <a href="#virConnectGetType">virConnectGetType</a> (<a href="libvir
|
||||
char * <a href="#virConnectGetURI">virConnectGetURI</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virConnectGetVersion">virConnectGetVersion</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> unsigned long * hvVer)
|
||||
int <a href="#virConnectListDefinedDomains">virConnectListDefinedDomains</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)
|
||||
int <a href="#virConnectListDefinedInterfaces">virConnectListDefinedInterfaces</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)
|
||||
int <a href="#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)
|
||||
int <a href="#virConnectListDefinedStoragePools">virConnectListDefinedStoragePools</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)
|
||||
int <a href="#virConnectListDomains">virConnectListDomains</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> int * ids, <br /> int maxids)
|
||||
int <a href="#virConnectListInterfaces">virConnectListInterfaces</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)
|
||||
int <a href="#virConnectListNetworks">virConnectListNetworks</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)
|
||||
int <a href="#virConnectListSecrets">virConnectListSecrets</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** uuids, <br /> int maxuuids)
|
||||
int <a href="#virConnectListStoragePools">virConnectListStoragePools</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)
|
||||
int <a href="#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virConnectNumOfDefinedInterfaces">virConnectNumOfDefinedInterfaces</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virConnectNumOfDefinedNetworks">virConnectNumOfDefinedNetworks</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virConnectNumOfDefinedStoragePools">virConnectNumOfDefinedStoragePools</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virConnectNumOfDomains">virConnectNumOfDomains</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virConnectNumOfInterfaces">virConnectNumOfInterfaces</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virConnectNumOfNetworks">virConnectNumOfNetworks</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virConnectNumOfSecrets">virConnectNumOfSecrets</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virConnectNumOfStoragePools">virConnectNumOfStoragePools</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virConnectOpen">virConnectOpen</a> (const char * name)
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virConnectOpenAuth">virConnectOpenAuth</a> (const char * name, <br /> <a href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a> auth, <br /> int flags)
|
||||
@ -239,6 +246,21 @@ int <a href="#virNodeGetInfo">virNodeGetInfo</a> (<a href="libvirt-libvirt.htm
|
||||
int <a href="#virNodeGetSecurityModel">virNodeGetSecurityModel</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> <a href="libvirt-libvirt.html#virSecurityModelPtr">virSecurityModelPtr</a> secmodel)
|
||||
int <a href="#virNodeListDevices">virNodeListDevices</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * cap, <br /> char ** const names, <br /> int maxnames, <br /> unsigned int flags)
|
||||
int <a href="#virNodeNumOfDevices">virNodeNumOfDevices</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * cap, <br /> unsigned int flags)
|
||||
<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> <a href="#virSecretDefineXML">virSecretDefineXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xml, <br /> unsigned int flags)
|
||||
int <a href="#virSecretFree">virSecretFree</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virSecretGetConnect">virSecretGetConnect</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)
|
||||
int <a href="#virSecretGetUUID">virSecretGetUUID</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> unsigned char * uuid)
|
||||
int <a href="#virSecretGetUUIDString">virSecretGetUUIDString</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> char * buf)
|
||||
const char * <a href="#virSecretGetUsageID">virSecretGetUsageID</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)
|
||||
int <a href="#virSecretGetUsageType">virSecretGetUsageType</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)
|
||||
unsigned char * <a href="#virSecretGetValue">virSecretGetValue</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> size_t * value_size, <br /> unsigned int flags)
|
||||
char * <a href="#virSecretGetXMLDesc">virSecretGetXMLDesc</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> unsigned int flags)
|
||||
<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> <a href="#virSecretLookupByUUID">virSecretLookupByUUID</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const unsigned char * uuid)
|
||||
<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> <a href="#virSecretLookupByUUIDString">virSecretLookupByUUIDString</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * uuidstr)
|
||||
<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> <a href="#virSecretLookupByUsage">virSecretLookupByUsage</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> int usageType, <br /> const char * usageID)
|
||||
int <a href="#virSecretRef">virSecretRef</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)
|
||||
int <a href="#virSecretSetValue">virSecretSetValue</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> const unsigned char * value, <br /> size_t value_size, <br /> unsigned int flags)
|
||||
int <a href="#virSecretUndefine">virSecretUndefine</a> (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)
|
||||
int <a href="#virStoragePoolBuild">virStoragePoolBuild</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)
|
||||
int <a href="#virStoragePoolCreate">virStoragePoolCreate</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)
|
||||
<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolCreateXML">virStoragePoolCreateXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xmlDesc, <br /> unsigned int flags)
|
||||
@ -319,7 +341,7 @@ int <a href="#virStorageVolRef">virStorageVolRef</a> (<a href="libvirt-libvirt.
|
||||
</pre><table><tr><td>long long</td><td>rx_bytes</td></tr><tr><td>long long</td><td>rx_packets</td></tr><tr><td>long long</td><td>rx_errs</td></tr><tr><td>long long</td><td>rx_drop</td></tr><tr><td>long long</td><td>tx_bytes</td></tr><tr><td>long long</td><td>tx_packets</td></tr><tr><td>long long</td><td>tx_errs</td></tr><tr><td>long long</td><td>tx_drop</td></tr></table><pre>
|
||||
}
|
||||
</pre></div><h3><a name="virDomainMemoryFlags" id="virDomainMemoryFlags"><code>virDomainMemoryFlags</code></a></h3><div class="api"><pre>enum virDomainMemoryFlags {
|
||||
</pre><table><tr><td><a name="VIR_MEMORY_VIRTUAL" id="VIR_MEMORY_VIRTUAL">VIR_MEMORY_VIRTUAL</a></td><td> = </td><td>1</td><td> : addresses are virtual addresses</td></tr></table><pre>}
|
||||
</pre><table><tr><td><a name="VIR_MEMORY_VIRTUAL" id="VIR_MEMORY_VIRTUAL">VIR_MEMORY_VIRTUAL</a></td><td> = </td><td>1</td><td> : addresses are virtual addresses</td></tr><tr><td><a name="VIR_MEMORY_PHYSICAL" id="VIR_MEMORY_PHYSICAL">VIR_MEMORY_PHYSICAL</a></td><td> = </td><td>2</td><td> : addresses are physical addresses</td></tr></table><pre>}
|
||||
</pre></div><h3><a name="virDomainMigrateFlags" id="virDomainMigrateFlags"><code>virDomainMigrateFlags</code></a></h3><div class="api"><pre>enum virDomainMigrateFlags {
|
||||
</pre><table><tr><td><a name="VIR_MIGRATE_LIVE" id="VIR_MIGRATE_LIVE">VIR_MIGRATE_LIVE</a></td><td> = </td><td>1</td><td> : live migration</td></tr></table><pre>}
|
||||
</pre></div><h3><a name="virDomainState" id="virDomainState"><code>virDomainState</code></a></h3><div class="api"><pre>enum virDomainState {
|
||||
@ -345,6 +367,11 @@ int <a href="#virStorageVolRef">virStorageVolRef</a> (<a href="libvirt-libvirt.
|
||||
}
|
||||
</pre></div><h3><a name="virSchedParameterType" id="virSchedParameterType"><code>virSchedParameterType</code></a></h3><div class="api"><pre>enum virSchedParameterType {
|
||||
</pre><table><tr><td><a name="VIR_DOMAIN_SCHED_FIELD_INT" id="VIR_DOMAIN_SCHED_FIELD_INT">VIR_DOMAIN_SCHED_FIELD_INT</a></td><td> = </td><td>1</td><td> : integer case</td></tr><tr><td><a name="VIR_DOMAIN_SCHED_FIELD_UINT" id="VIR_DOMAIN_SCHED_FIELD_UINT">VIR_DOMAIN_SCHED_FIELD_UINT</a></td><td> = </td><td>2</td><td> : unsigned integer case</td></tr><tr><td><a name="VIR_DOMAIN_SCHED_FIELD_LLONG" id="VIR_DOMAIN_SCHED_FIELD_LLONG">VIR_DOMAIN_SCHED_FIELD_LLONG</a></td><td> = </td><td>3</td><td> : long long case</td></tr><tr><td><a name="VIR_DOMAIN_SCHED_FIELD_ULLONG" id="VIR_DOMAIN_SCHED_FIELD_ULLONG">VIR_DOMAIN_SCHED_FIELD_ULLONG</a></td><td> = </td><td>4</td><td> : unsigned long long case</td></tr><tr><td><a name="VIR_DOMAIN_SCHED_FIELD_DOUBLE" id="VIR_DOMAIN_SCHED_FIELD_DOUBLE">VIR_DOMAIN_SCHED_FIELD_DOUBLE</a></td><td> = </td><td>5</td><td> : double case</td></tr><tr><td><a name="VIR_DOMAIN_SCHED_FIELD_BOOLEAN" id="VIR_DOMAIN_SCHED_FIELD_BOOLEAN">VIR_DOMAIN_SCHED_FIELD_BOOLEAN</a></td><td> = </td><td>6</td><td> : boolean(character) case</td></tr></table><pre>}
|
||||
</pre></div><h3><a name="virSecret" id="virSecret"><code>virSecret</code></a></h3><div class="api"><pre>struct virSecret{
|
||||
</pre><table><tr><td colspan="3">The content of this structure is not made public by the API</td></tr></table><pre>
|
||||
}
|
||||
</pre></div><h3><a name="virSecretUsageType" id="virSecretUsageType"><code>virSecretUsageType</code></a></h3><div class="api"><pre>enum virSecretUsageType {
|
||||
</pre><table><tr><td><a name="VIR_SECRET_USAGE_TYPE_NONE" id="VIR_SECRET_USAGE_TYPE_NONE">VIR_SECRET_USAGE_TYPE_NONE</a></td><td> = </td><td>0</td></tr><tr><td><a name="VIR_SECRET_USAGE_TYPE_VOLUME" id="VIR_SECRET_USAGE_TYPE_VOLUME">VIR_SECRET_USAGE_TYPE_VOLUME</a></td><td> = </td><td>1</td><td> : Expect more owner types later...</td></tr></table><pre>}
|
||||
</pre></div><h3><a name="virSecurityLabel" id="virSecurityLabel"><code>virSecurityLabel</code></a></h3><div class="api"><pre>struct virSecurityLabel{
|
||||
</pre><table><tr><td colspan="3">The content of this structure is not made public by the API</td></tr></table><pre>
|
||||
}
|
||||
@ -393,23 +420,27 @@ int <a href="#virStorageVolRef">virStorageVolRef</a> (<a href="libvirt-libvirt.
|
||||
</pre><p>Get the name of the Hypervisor software used.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL in case of error, a static zero terminated string otherwise. See also: http://www.redhat.com/archives/libvir-list/2007-February/msg00096.html</td></tr></tbody></table></div><h3><a name="virConnectGetURI" id="virConnectGetURI"><code>virConnectGetURI</code></a></h3><pre class="programlisting">char * virConnectGetURI (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>This returns the URI (name) of the hypervisor connection. Normally this is the same as or similar to the string passed to the virConnectOpen/virConnectOpenReadOnly call, but the driver may make the URI canonical. If name == NULL was passed to virConnectOpen, then the driver will return a non-NULL URI which can be used to connect to the same hypervisor later.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to a hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the URI string which must be freed by the caller, or NULL if there was an error.</td></tr></tbody></table></div><h3><a name="virConnectGetVersion" id="virConnectGetVersion"><code>virConnectGetVersion</code></a></h3><pre class="programlisting">int virConnectGetVersion (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> unsigned long * hvVer)<br />
|
||||
</pre><p>Get the version level of the Hypervisor running. This may work only with hypervisor call, i.e. with privileged access to the hypervisor, not with a Read-Only connection.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>hvVer</tt></i>:</span></td><td>return value for the version of the running hypervisor (OUT)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 otherwise. if the version can't be extracted by lack of capacities returns 0 and @hvVer is 0, otherwise @hvVer value is major * 1,000,000 + minor * 1,000 + release</td></tr></tbody></table></div><h3><a name="virConnectListDefinedDomains" id="virConnectListDefinedDomains"><code>virConnectListDefinedDomains</code></a></h3><pre class="programlisting">int virConnectListDefinedDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>list the defined but inactive domains, stores the pointers to the names in @names</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>pointer to an array to store the names</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of the array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of names provided in the array or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListDefinedNetworks" id="virConnectListDefinedNetworks"><code>virConnectListDefinedNetworks</code></a></h3><pre class="programlisting">int virConnectListDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>list the defined but inactive domains, stores the pointers to the names in @names</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>pointer to an array to store the names</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of the array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of names provided in the array or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListDefinedInterfaces" id="virConnectListDefinedInterfaces"><code>virConnectListDefinedInterfaces</code></a></h3><pre class="programlisting">int virConnectListDefinedInterfaces (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Collect the list of defined (inactive) physical host interfaces, and store their names in @names.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of names of interfaces</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of interfaces found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListDefinedNetworks" id="virConnectListDefinedNetworks"><code>virConnectListDefinedNetworks</code></a></h3><pre class="programlisting">int virConnectListDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>list the inactive networks, stores the pointers to the names in @names</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>pointer to an array to store the names</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of the array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of names provided in the array or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListDefinedStoragePools" id="virConnectListDefinedStoragePools"><code>virConnectListDefinedStoragePools</code></a></h3><pre class="programlisting">int virConnectListDefinedStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Provides the list of names of inactive storage pools upto maxnames. If there are more than maxnames, the remaining names will be silently ignored.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array of char * to fill with pool names (allocated by caller)</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of the names array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on error</td></tr></tbody></table></div><h3><a name="virConnectListDomains" id="virConnectListDomains"><code>virConnectListDomains</code></a></h3><pre class="programlisting">int virConnectListDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> int * ids, <br /> int maxids)<br />
|
||||
</pre><p>Collect the list of active domains, and store their ID in @maxids</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>ids</tt></i>:</span></td><td>array to collect the list of IDs of active domains</td></tr><tr><td><span class="term"><i><tt>maxids</tt></i>:</span></td><td>size of @ids</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of domain found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListInterfaces" id="virConnectListInterfaces"><code>virConnectListInterfaces</code></a></h3><pre class="programlisting">int virConnectListInterfaces (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Collect the list of physical host interfaces, and store their names in @names</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of names of interfaces</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of interfaces found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListNetworks" id="virConnectListNetworks"><code>virConnectListNetworks</code></a></h3><pre class="programlisting">int virConnectListNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Collect the list of active networks, and store their names in @names</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of names of active networks</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of networks found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListStoragePools" id="virConnectListStoragePools"><code>virConnectListStoragePools</code></a></h3><pre class="programlisting">int virConnectListStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Collect the list of active physical host interfaces, and store their names in @names</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of names of interfaces</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of interfaces found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListNetworks" id="virConnectListNetworks"><code>virConnectListNetworks</code></a></h3><pre class="programlisting">int virConnectListNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Collect the list of active networks, and store their names in @names</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of names of active networks</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of networks found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListSecrets" id="virConnectListSecrets"><code>virConnectListSecrets</code></a></h3><pre class="programlisting">int virConnectListSecrets (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** uuids, <br /> int maxuuids)<br />
|
||||
</pre><p>List UUIDs of defined secrets, store pointers to names in uuids.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td><a href="libvirt-libvirt.html#virConnect">virConnect</a> connection</td></tr><tr><td><span class="term"><i><tt>uuids</tt></i>:</span></td><td>Pointer to an array to store the UUIDs</td></tr><tr><td><span class="term"><i><tt>maxuuids</tt></i>:</span></td><td>size of the array.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of UUIDs provided in the array, or -1 on failure.</td></tr></tbody></table></div><h3><a name="virConnectListStoragePools" id="virConnectListStoragePools"><code>virConnectListStoragePools</code></a></h3><pre class="programlisting">int virConnectListStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Provides the list of names of active storage pools upto maxnames. If there are more than maxnames, the remaining names will be silently ignored.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array of char * to fill with pool names (allocated by caller)</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of the names array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDefinedDomains" id="virConnectNumOfDefinedDomains"><code>virConnectNumOfDefinedDomains</code></a></h3><pre class="programlisting">int virConnectNumOfDefinedDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of defined but inactive domains.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of domain found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDefinedNetworks" id="virConnectNumOfDefinedNetworks"><code>virConnectNumOfDefinedNetworks</code></a></h3><pre class="programlisting">int virConnectNumOfDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of defined but inactive domains.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of domain found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDefinedInterfaces" id="virConnectNumOfDefinedInterfaces"><code>virConnectNumOfDefinedInterfaces</code></a></h3><pre class="programlisting">int virConnectNumOfDefinedInterfaces (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of defined (inactive) interfaces on the physical host.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of defined interface found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDefinedNetworks" id="virConnectNumOfDefinedNetworks"><code>virConnectNumOfDefinedNetworks</code></a></h3><pre class="programlisting">int virConnectNumOfDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of inactive networks.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of networks found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDefinedStoragePools" id="virConnectNumOfDefinedStoragePools"><code>virConnectNumOfDefinedStoragePools</code></a></h3><pre class="programlisting">int virConnectNumOfDefinedStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of inactive storage pools</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of pools found, or -1 on error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDomains" id="virConnectNumOfDomains"><code>virConnectNumOfDomains</code></a></h3><pre class="programlisting">int virConnectNumOfDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of active domains.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of domain found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfInterfaces" id="virConnectNumOfInterfaces"><code>virConnectNumOfInterfaces</code></a></h3><pre class="programlisting">int virConnectNumOfInterfaces (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of interfaces on the physical host.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of interface found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfNetworks" id="virConnectNumOfNetworks"><code>virConnectNumOfNetworks</code></a></h3><pre class="programlisting">int virConnectNumOfNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of active networks.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of network found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfStoragePools" id="virConnectNumOfStoragePools"><code>virConnectNumOfStoragePools</code></a></h3><pre class="programlisting">int virConnectNumOfStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of active interfaces on the physical host.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of active interfaces found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfNetworks" id="virConnectNumOfNetworks"><code>virConnectNumOfNetworks</code></a></h3><pre class="programlisting">int virConnectNumOfNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of active networks.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of network found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfSecrets" id="virConnectNumOfSecrets"><code>virConnectNumOfSecrets</code></a></h3><pre class="programlisting">int virConnectNumOfSecrets (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Fetch number of currently defined secrets.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td><a href="libvirt-libvirt.html#virConnect">virConnect</a> connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number currently defined secrets.</td></tr></tbody></table></div><h3><a name="virConnectNumOfStoragePools" id="virConnectNumOfStoragePools"><code>virConnectNumOfStoragePools</code></a></h3><pre class="programlisting">int virConnectNumOfStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of active storage pools</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of pools found, or -1 on error</td></tr></tbody></table></div><h3><a name="virConnectOpen" id="virConnectOpen"><code>virConnectOpen</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpen (const char * name)<br />
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor and xen store</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div><h3><a name="virConnectOpenAuth" id="virConnectOpenAuth"><code>virConnectOpenAuth</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenAuth (const char * name, <br /> <a href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a> auth, <br /> int flags)<br />
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor. If necessary, authentication will be performed fetching credentials via the callback</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>auth</tt></i>:</span></td><td>Authenticate callback parameters</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>Open flags</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div><h3><a name="virConnectOpenReadOnly" id="virConnectOpenReadOnly"><code>virConnectOpenReadOnly</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenReadOnly (const char * name)<br />
|
||||
</pre><p>This function should be called first to get a restricted connection to the library functionalities. The set of APIs usable are then restricted on the available methods to control the domains.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div><h3><a name="virConnectRef" id="virConnectRef"><code>virConnectRef</code></a></h3><pre class="programlisting">int virConnectRef (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor and xen store</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error If @name is NULL then probing will be done to determine a suitable default driver to activate. This involves trying each hypervisor in turn until one successfully opens. If the LIBVIRT_DEFAULT_URI environment variable is set, then it will be used in preference to probing for a driver. If connecting to an unprivileged hypervisor driver which requires the libvirtd daemon to be active, it will automatically be launched if not already running. This can be prevented by setting the environment variable LIBVIRT_AUTOSTART=0 URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div><h3><a name="virConnectOpenAuth" id="virConnectOpenAuth"><code>virConnectOpenAuth</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenAuth (const char * name, <br /> <a href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a> auth, <br /> int flags)<br />
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor. If necessary, authentication will be performed fetching credentials via the callback See <a href="libvirt-libvirt.html#virConnectOpen">virConnectOpen</a> for notes about environment variables which can have an effect on opening drivers</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>auth</tt></i>:</span></td><td>Authenticate callback parameters</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>Open flags</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div><h3><a name="virConnectOpenReadOnly" id="virConnectOpenReadOnly"><code>virConnectOpenReadOnly</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenReadOnly (const char * name)<br />
|
||||
</pre><p>This function should be called first to get a restricted connection to the library functionalities. The set of APIs usable are then restricted on the available methods to control the domains. See <a href="libvirt-libvirt.html#virConnectOpen">virConnectOpen</a> for notes about environment variables which can have an effect on opening drivers</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div><h3><a name="virConnectRef" id="virConnectRef"><code>virConnectRef</code></a></h3><pre class="programlisting">int virConnectRef (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Increment the reference count on the connection. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virConnectClose">virConnectClose</a> to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a connection would increment the reference count.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>the connection to hold a reference on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure</td></tr></tbody></table></div><h3><a name="virDomainAttachDevice" id="virDomainAttachDevice"><code>virDomainAttachDevice</code></a></h3><pre class="programlisting">int virDomainAttachDevice (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> const char * xml)<br />
|
||||
</pre><p>Create a virtual device attachment to backend.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>pointer to domain object</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>pointer to XML description of one device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainBlockPeek" id="virDomainBlockPeek"><code>virDomainBlockPeek</code></a></h3><pre class="programlisting">int virDomainBlockPeek (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br /> const char * path, <br /> unsigned long long offset, <br /> size_t size, <br /> void * buffer, <br /> unsigned int flags)<br />
|
||||
</pre><p>This function allows you to read the contents of a domain's disk device. Typical uses for this are to determine if the domain has written a Master Boot Record (indicating that the domain has completed installation), or to try to work out the state of the domain's filesystems. (Note that in the local case you might try to open the block device or file directly, but that won't work in the remote case, nor if you don't have sufficient permission. Hence the need for this call). 'path' must be a device or file corresponding to the domain. In other words it must be the precise string returned in a <disk><source dev='...'/></disk> from virDomainGetXMLDesc. 'offset' and 'size' represent an area which must lie entirely within the device or file. 'size' may be 0 to test if the call would succeed. 'buffer' is the return buffer and must be at least 'size' bytes. NB. The remote driver imposes a 64K byte limit on 'size'. For your program to be able to work reliably over a remote connection you should split large requests to <= 65536 bytes.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dom</tt></i>:</span></td><td>pointer to the domain object</td></tr><tr><td><span class="term"><i><tt>path</tt></i>:</span></td><td>path to the block device</td></tr><tr><td><span class="term"><i><tt>offset</tt></i>:</span></td><td>offset within block device</td></tr><tr><td><span class="term"><i><tt>size</tt></i>:</span></td><td>size to read</td></tr><tr><td><span class="term"><i><tt>buffer</tt></i>:</span></td><td>return buffer (must be at least size bytes)</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>unused, always pass 0</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success or -1 in case of failure. really 64 bits</td></tr></tbody></table></div><h3><a name="virDomainBlockStats" id="virDomainBlockStats"><code>virDomainBlockStats</code></a></h3><pre class="programlisting">int virDomainBlockStats (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br /> const char * path, <br /> <a href="libvirt-libvirt.html#virDomainBlockStatsPtr">virDomainBlockStatsPtr</a> stats, <br /> size_t size)<br />
|
||||
@ -473,14 +504,14 @@ int <a href="#virStorageVolRef">virStorageVolRef</a> (<a href="libvirt-libvirt.
|
||||
</pre><p>Activate an interface (ie call "ifup")</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>pointer to a defined interface</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>and OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of error</td></tr></tbody></table></div><h3><a name="virInterfaceDefineXML" id="virInterfaceDefineXML"><code>virInterfaceDefineXML</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> virInterfaceDefineXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xml, <br /> unsigned int flags)<br />
|
||||
</pre><p>Define an interface (or modify existing interface configuration)</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>the XML description for the interface, preferably in UTF-8</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>and OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL in case of error, a pointer to the interface otherwise</td></tr></tbody></table></div><h3><a name="virInterfaceDestroy" id="virInterfaceDestroy"><code>virInterfaceDestroy</code></a></h3><pre class="programlisting">int virInterfaceDestroy (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface, <br /> unsigned int flags)<br />
|
||||
</pre><p>deactivate an interface (ie call "ifdown") This does not remove the interface from the config, and does not free the associated <a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> object.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>an interface object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>and OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virInterfaceFree" id="virInterfaceFree"><code>virInterfaceFree</code></a></h3><pre class="programlisting">int virInterfaceFree (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Free the interface object. The interface itself is unaltered. The data structure is freed and should not be used thereafter.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>a interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virInterfaceGetConnect" id="virInterfaceGetConnect"><code>virInterfaceGetConnect</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virInterfaceGetConnect (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Provides the connection pointer associated with an interface. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the interface object together.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>pointer to a interface</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div><h3><a name="virInterfaceGetMACString" id="virInterfaceGetMACString"><code>virInterfaceGetMACString</code></a></h3><pre class="programlisting">const char * virInterfaceGetMACString (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Get the MAC for a interface as string. For more information about MAC see RFC4122.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>a interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the MAC address (in null-terminated ASCII format) or NULL, the string need not be deallocated its lifetime will be the same as the interface object.</td></tr></tbody></table></div><h3><a name="virInterfaceGetName" id="virInterfaceGetName"><code>virInterfaceGetName</code></a></h3><pre class="programlisting">const char * virInterfaceGetName (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Get the public name for that interface</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>a interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the name or NULL, the string need not be deallocated its lifetime will be the same as the interface object.</td></tr></tbody></table></div><h3><a name="virInterfaceGetXMLDesc" id="virInterfaceGetXMLDesc"><code>virInterfaceGetXMLDesc</code></a></h3><pre class="programlisting">char * virInterfaceGetXMLDesc (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface, <br /> unsigned int flags)<br />
|
||||
</pre><p>Provide an XML description of the interface. The description may be reused later to recreate the interface with virInterfaceCreateXML().</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>a interface object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>and OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.</td></tr></tbody></table></div><h3><a name="virInterfaceLookupByMACString" id="virInterfaceLookupByMACString"><code>virInterfaceLookupByMACString</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> virInterfaceLookupByMACString (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * macstr)<br />
|
||||
</pre><p>Free the interface object. The interface itself is unaltered. The data structure is freed and should not be used thereafter.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>an interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virInterfaceGetConnect" id="virInterfaceGetConnect"><code>virInterfaceGetConnect</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virInterfaceGetConnect (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Provides the connection pointer associated with an interface. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the interface object together.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>pointer to an interface</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div><h3><a name="virInterfaceGetMACString" id="virInterfaceGetMACString"><code>virInterfaceGetMACString</code></a></h3><pre class="programlisting">const char * virInterfaceGetMACString (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Get the MAC for an interface as string. For more information about MAC see RFC4122.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>an interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the MAC address (in null-terminated ASCII format) or NULL, the string need not be deallocated its lifetime will be the same as the interface object.</td></tr></tbody></table></div><h3><a name="virInterfaceGetName" id="virInterfaceGetName"><code>virInterfaceGetName</code></a></h3><pre class="programlisting">const char * virInterfaceGetName (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Get the public name for that interface</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>an interface object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the name or NULL, the string need not be deallocated its lifetime will be the same as the interface object.</td></tr></tbody></table></div><h3><a name="virInterfaceGetXMLDesc" id="virInterfaceGetXMLDesc"><code>virInterfaceGetXMLDesc</code></a></h3><pre class="programlisting">char * virInterfaceGetXMLDesc (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface, <br /> unsigned int flags)<br />
|
||||
</pre><p>Provide an XML description of the interface. The description may be reused later to redefine the interface with virInterfaceDefineXML().</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>an interface object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>an OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.</td></tr></tbody></table></div><h3><a name="virInterfaceLookupByMACString" id="virInterfaceLookupByMACString"><code>virInterfaceLookupByMACString</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> virInterfaceLookupByMACString (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * macstr)<br />
|
||||
</pre><p>Try to lookup an interface on the given hypervisor based on its MAC.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>macstr</tt></i>:</span></td><td>the MAC for the interface (null-terminated ASCII format)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new interface object or NULL in case of failure. If the interface cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_INTERFACE">VIR_ERR_NO_INTERFACE</a> error is raised.</td></tr></tbody></table></div><h3><a name="virInterfaceLookupByName" id="virInterfaceLookupByName"><code>virInterfaceLookupByName</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> virInterfaceLookupByName (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * name)<br />
|
||||
</pre><p>Try to lookup an interface on the given hypervisor based on its name.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>name for the interface</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new interface object or NULL in case of failure. If the interface cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_INTERFACE">VIR_ERR_NO_INTERFACE</a> error is raised.</td></tr></tbody></table></div><h3><a name="virInterfaceRef" id="virInterfaceRef"><code>virInterfaceRef</code></a></h3><pre class="programlisting">int virInterfaceRef (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Increment the reference count on the interface. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virInterfaceFree">virInterfaceFree</a> to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a interface would increment the reference count.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>the interface to hold a reference on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virInterfaceUndefine" id="virInterfaceUndefine"><code>virInterfaceUndefine</code></a></h3><pre class="programlisting">int virInterfaceUndefine (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Increment the reference count on the interface. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virInterfaceFree">virInterfaceFree</a> to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using an interface would increment the reference count.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>the interface to hold a reference on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virInterfaceUndefine" id="virInterfaceUndefine"><code>virInterfaceUndefine</code></a></h3><pre class="programlisting">int virInterfaceUndefine (<a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> iface)<br />
|
||||
</pre><p>Undefine an interface, ie remove it from the config. This does not free the associated <a href="libvirt-libvirt.html#virInterfacePtr">virInterfacePtr</a> object.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iface</tt></i>:</span></td><td>pointer to a defined interface</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of error</td></tr></tbody></table></div><h3><a name="virNetworkCreate" id="virNetworkCreate"><code>virNetworkCreate</code></a></h3><pre class="programlisting">int virNetworkCreate (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br />
|
||||
</pre><p>Create and start a defined network. If the call succeed the network moves from the defined to the running networks pools.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>pointer to a defined network</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of error</td></tr></tbody></table></div><h3><a name="virNetworkCreateXML" id="virNetworkCreateXML"><code>virNetworkCreateXML</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> virNetworkCreateXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xmlDesc)<br />
|
||||
</pre><p>Create and start a new virtual network, based on an XML description similar to the one returned by virNetworkGetXMLDesc()</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xmlDesc</tt></i>:</span></td><td>an XML description of the network</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new network object or NULL in case of failure</td></tr></tbody></table></div><h3><a name="virNetworkDefineXML" id="virNetworkDefineXML"><code>virNetworkDefineXML</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> virNetworkDefineXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xml)<br />
|
||||
@ -493,7 +524,7 @@ int <a href="#virStorageVolRef">virStorageVolRef</a> (<a href="libvirt-libvirt.
|
||||
</pre><p>Get the public name for that network</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the name or NULL, the string need not be deallocated its lifetime will be the same as the network object.</td></tr></tbody></table></div><h3><a name="virNetworkGetUUID" id="virNetworkGetUUID"><code>virNetworkGetUUID</code></a></h3><pre class="programlisting">int virNetworkGetUUID (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br /> unsigned char * uuid)<br />
|
||||
</pre><p>Get the UUID for a network</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network object</td></tr><tr><td><span class="term"><i><tt>uuid</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a> bytes array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success</td></tr></tbody></table></div><h3><a name="virNetworkGetUUIDString" id="virNetworkGetUUIDString"><code>virNetworkGetUUIDString</code></a></h3><pre class="programlisting">int virNetworkGetUUIDString (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br /> char * buf)<br />
|
||||
</pre><p>Get the UUID for a network as string. For more information about UUID see RFC4122.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network object</td></tr><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a> bytes array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success</td></tr></tbody></table></div><h3><a name="virNetworkGetXMLDesc" id="virNetworkGetXMLDesc"><code>virNetworkGetXMLDesc</code></a></h3><pre class="programlisting">char * virNetworkGetXMLDesc (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br /> int flags)<br />
|
||||
</pre><p>Provide an XML description of the network. The description may be reused later to relaunch the network with virNetworkCreateXML().</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>and OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.</td></tr></tbody></table></div><h3><a name="virNetworkLookupByName" id="virNetworkLookupByName"><code>virNetworkLookupByName</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> virNetworkLookupByName (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * name)<br />
|
||||
</pre><p>Provide an XML description of the network. The description may be reused later to relaunch the network with virNetworkCreateXML().</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>an OR'ed set of extraction flags, not used yet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.</td></tr></tbody></table></div><h3><a name="virNetworkLookupByName" id="virNetworkLookupByName"><code>virNetworkLookupByName</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> virNetworkLookupByName (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * name)<br />
|
||||
</pre><p>Try to lookup a network on the given hypervisor based on its name.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>name for the network</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new network object or NULL in case of failure. If the network cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_NETWORK">VIR_ERR_NO_NETWORK</a> error is raised.</td></tr></tbody></table></div><h3><a name="virNetworkLookupByUUID" id="virNetworkLookupByUUID"><code>virNetworkLookupByUUID</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> virNetworkLookupByUUID (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const unsigned char * uuid)<br />
|
||||
</pre><p>Try to lookup a network on the given hypervisor based on its UUID.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>uuid</tt></i>:</span></td><td>the raw UUID for the network</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new network object or NULL in case of failure. If the network cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_NETWORK">VIR_ERR_NO_NETWORK</a> error is raised.</td></tr></tbody></table></div><h3><a name="virNetworkLookupByUUIDString" id="virNetworkLookupByUUIDString"><code>virNetworkLookupByUUIDString</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> virNetworkLookupByUUIDString (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * uuidstr)<br />
|
||||
</pre><p>Try to lookup a network on the given hypervisor based on its UUID.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>uuidstr</tt></i>:</span></td><td>the string UUID for the network</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new network object or NULL in case of failure. If the network cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_NETWORK">VIR_ERR_NO_NETWORK</a> error is raised.</td></tr></tbody></table></div><h3><a name="virNetworkRef" id="virNetworkRef"><code>virNetworkRef</code></a></h3><pre class="programlisting">int virNetworkRef (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br />
|
||||
@ -513,12 +544,27 @@ int <a href="#virStorageVolRef">virStorageVolRef</a> (<a href="libvirt-libvirt.
|
||||
</pre><p>Re-attach a previously dettached node device to the node so that it may be used by the node again. Depending on the hypervisor, this may involve operations such as resetting the device, unbinding it from a dummy device driver and binding it to its appropriate driver. If the device is currently in use by a guest, this method may fail.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>pointer to the node device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virNodeDeviceRef" id="virNodeDeviceRef"><code>virNodeDeviceRef</code></a></h3><pre class="programlisting">int virNodeDeviceRef (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br />
|
||||
</pre><p>Increment the reference count on the dev. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virNodeDeviceFree">virNodeDeviceFree</a> to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a dev would increment the reference count.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>the dev to hold a reference on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virNodeDeviceReset" id="virNodeDeviceReset"><code>virNodeDeviceReset</code></a></h3><pre class="programlisting">int virNodeDeviceReset (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br />
|
||||
</pre><p>Reset a previously dettached node device to the node before or after assigning it to a guest. The exact reset semantics depends on the hypervisor and device type but, for example, KVM will attempt to reset PCI devices with a Function Level Reset, Secondary Bus Reset or a Power Management D-State reset. If the reset will affect other devices which are currently in use, this function may fail.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>pointer to the node device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virNodeGetCellsFreeMemory" id="virNodeGetCellsFreeMemory"><code>virNodeGetCellsFreeMemory</code></a></h3><pre class="programlisting">int virNodeGetCellsFreeMemory (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> unsigned long long * freeMems, <br /> int startCell, <br /> int maxCells)<br />
|
||||
</pre><p>This call returns the amount of free memory in one or more NUMA cells. The @freeMems array must be allocated by the caller and will be filled with the amount of free memory in kilobytes for each cell requested, starting with startCell (in freeMems[0]), up to either (startCell + maxCells), or the number of additional cells in the node, whichever is smaller.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>freeMems</tt></i>:</span></td><td>pointer to the array of unsigned long long</td></tr><tr><td><span class="term"><i><tt>startCell</tt></i>:</span></td><td>index of first cell to return freeMems info on.</td></tr><tr><td><span class="term"><i><tt>maxCells</tt></i>:</span></td><td>Maximum number of cells for which freeMems information can be returned.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of entries filled in freeMems, or -1 in case of error.</td></tr></tbody></table></div><h3><a name="virNodeGetFreeMemory" id="virNodeGetFreeMemory"><code>virNodeGetFreeMemory</code></a></h3><pre class="programlisting">unsigned long long virNodeGetFreeMemory (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>This call returns the amount of free memory in one or more NUMA cells. The @freeMems array must be allocated by the caller and will be filled with the amount of free memory in bytes for each cell requested, starting with startCell (in freeMems[0]), up to either (startCell + maxCells), or the number of additional cells in the node, whichever is smaller.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>freeMems</tt></i>:</span></td><td>pointer to the array of unsigned long long</td></tr><tr><td><span class="term"><i><tt>startCell</tt></i>:</span></td><td>index of first cell to return freeMems info on.</td></tr><tr><td><span class="term"><i><tt>maxCells</tt></i>:</span></td><td>Maximum number of cells for which freeMems information can be returned.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of entries filled in freeMems, or -1 in case of error.</td></tr></tbody></table></div><h3><a name="virNodeGetFreeMemory" id="virNodeGetFreeMemory"><code>virNodeGetFreeMemory</code></a></h3><pre class="programlisting">unsigned long long virNodeGetFreeMemory (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>provides the free memory available on the Node Note: most libvirt APIs provide memory sizes in kilobytes, but in this function the returned value is in bytes. Divide by 1024 as necessary.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the available free memory in bytes or 0 in case of error</td></tr></tbody></table></div><h3><a name="virNodeGetInfo" id="virNodeGetInfo"><code>virNodeGetInfo</code></a></h3><pre class="programlisting">int virNodeGetInfo (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> <a href="libvirt-libvirt.html#virNodeInfoPtr">virNodeInfoPtr</a> info)<br />
|
||||
</pre><p>Extract hardware information about the node.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#virNodeInfo">virNodeInfo</a> structure allocated by the user</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virNodeGetSecurityModel" id="virNodeGetSecurityModel"><code>virNodeGetSecurityModel</code></a></h3><pre class="programlisting">int virNodeGetSecurityModel (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> <a href="libvirt-libvirt.html#virSecurityModelPtr">virSecurityModelPtr</a> secmodel)<br />
|
||||
</pre><p>Extract the security model of a hypervisor. The 'model' field in the @secmodel argument may be initialized to the empty string if the driver has not activated a security model.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>a connection object</td></tr><tr><td><span class="term"><i><tt>secmodel</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#virSecurityModel">virSecurityModel</a> structure</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure</td></tr></tbody></table></div><h3><a name="virNodeListDevices" id="virNodeListDevices"><code>virNodeListDevices</code></a></h3><pre class="programlisting">int virNodeListDevices (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * cap, <br /> char ** const names, <br /> int maxnames, <br /> unsigned int flags)<br />
|
||||
</pre><p>Collect the list of node devices, and store their names in @names If the optional 'cap' argument is non-NULL, then the count will be restricted to devices with the specified capability</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>cap</tt></i>:</span></td><td>capability name</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of node device names</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of node devices found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virNodeNumOfDevices" id="virNodeNumOfDevices"><code>virNodeNumOfDevices</code></a></h3><pre class="programlisting">int virNodeNumOfDevices (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * cap, <br /> unsigned int flags)<br />
|
||||
</pre><p>Provides the number of node devices. If the optional 'cap' argument is non-NULL, then the count will be restricted to devices with the specified capability</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>cap</tt></i>:</span></td><td>capability name</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of node devices or -1 in case of error</td></tr></tbody></table></div><h3><a name="virStoragePoolBuild" id="virStoragePoolBuild"><code>virStoragePoolBuild</code></a></h3><pre class="programlisting">int virStoragePoolBuild (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
</pre><p>Provides the number of node devices. If the optional 'cap' argument is non-NULL, then the count will be restricted to devices with the specified capability</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>cap</tt></i>:</span></td><td>capability name</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of node devices or -1 in case of error</td></tr></tbody></table></div><h3><a name="virSecretDefineXML" id="virSecretDefineXML"><code>virSecretDefineXML</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> virSecretDefineXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xml, <br /> unsigned int flags)<br />
|
||||
</pre><p>If XML specifies an UUID, locates the specified secret and replaces all attributes of the secret specified by UUID by attributes specified in xml (any attributes not specified in xml are discarded). Otherwise, creates a new secret with an automatically chosen UUID, and initializes its attributes from xml.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td><a href="libvirt-libvirt.html#virConnect">virConnect</a> connection</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>XML describing the secret.</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a the secret on success, NULL on failure.</td></tr></tbody></table></div><h3><a name="virSecretFree" id="virSecretFree"><code>virSecretFree</code></a></h3><pre class="programlisting">int virSecretFree (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br />
|
||||
</pre><p>Release the secret handle. The underlying secret continues to exist.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>pointer to a secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div><h3><a name="virSecretGetConnect" id="virSecretGetConnect"><code>virSecretGetConnect</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virSecretGetConnect (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br />
|
||||
</pre><p>Provides the connection pointer associated with a secret. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the secret object together.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div><h3><a name="virSecretGetUUID" id="virSecretGetUUID"><code>virSecretGetUUID</code></a></h3><pre class="programlisting">int virSecretGetUUID (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> unsigned char * uuid)<br />
|
||||
</pre><p>Fetches the UUID of the secret.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>uuid</tt></i>:</span></td><td>buffer of <a href="libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a> bytes in size</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success with the uuid buffer being filled, or -1 upon failure.</td></tr></tbody></table></div><h3><a name="virSecretGetUUIDString" id="virSecretGetUUIDString"><code>virSecretGetUUIDString</code></a></h3><pre class="programlisting">int virSecretGetUUIDString (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> char * buf)<br />
|
||||
</pre><p>Get the UUID for a secret as string. For more information about UUID see RFC4122.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>a secret object</td></tr><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a> bytes array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success</td></tr></tbody></table></div><h3><a name="virSecretGetUsageID" id="virSecretGetUsageID"><code>virSecretGetUsageID</code></a></h3><pre class="programlisting">const char * virSecretGetUsageID (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br />
|
||||
</pre><p>Get the unique identifier of the object with which this secret is to be used. The format of the identifier is dependant on the usage type of the secret. For a secret with a usage type of <a href="libvirt-libvirt.html#VIR_SECRET_USAGE_TYPE_VOLUME">VIR_SECRET_USAGE_TYPE_VOLUME</a> the identifier will be a fully qualfied path name. The identifiers are intended to be unique within the set of all secrets sharing the same usage type. ie, there shall only ever be one secret for each volume path.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>a secret object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a string identifying the object using the secret, or NULL upon error</td></tr></tbody></table></div><h3><a name="virSecretGetUsageType" id="virSecretGetUsageType"><code>virSecretGetUsageType</code></a></h3><pre class="programlisting">int virSecretGetUsageType (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br />
|
||||
</pre><p>Get the type of object which uses this secret. The returned value is one of the constants defined in the <a href="libvirt-libvirt.html#virSecretUsageType">virSecretUsageType</a> enumeration. More values may be added to this enumeration in the future, so callers should expect to see usage types they do not explicitly know about.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>a secret object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a positive integer identifying the type of object, or -1 upon error.</td></tr></tbody></table></div><h3><a name="virSecretGetValue" id="virSecretGetValue"><code>virSecretGetValue</code></a></h3><pre class="programlisting">unsigned char * virSecretGetValue (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> size_t * value_size, <br /> unsigned int flags)<br />
|
||||
</pre><p>Fetches the value of a secret.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> connection</td></tr><tr><td><span class="term"><i><tt>value_size</tt></i>:</span></td><td>Place for storing size of the secret value</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the secret value on success, NULL on failure. The caller must free() the secret value.</td></tr></tbody></table></div><h3><a name="virSecretGetXMLDesc" id="virSecretGetXMLDesc"><code>virSecretGetXMLDesc</code></a></h3><pre class="programlisting">char * virSecretGetXMLDesc (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> unsigned int flags)<br />
|
||||
</pre><p>Fetches an XML document describing attributes of the secret.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the XML document on success, NULL on failure. The caller must free() the XML.</td></tr></tbody></table></div><h3><a name="virSecretLookupByUUID" id="virSecretLookupByUUID"><code>virSecretLookupByUUID</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> virSecretLookupByUUID (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const unsigned char * uuid)<br />
|
||||
</pre><p>Try to lookup a secret on the given hypervisor based on its UUID. Uses the 16 bytes of raw data to describe the UUID</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>uuid</tt></i>:</span></td><td>the raw UUID for the secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new secret object or NULL in case of failure. If the secret cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_SECRET">VIR_ERR_NO_SECRET</a> error is raised.</td></tr></tbody></table></div><h3><a name="virSecretLookupByUUIDString" id="virSecretLookupByUUIDString"><code>virSecretLookupByUUIDString</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> virSecretLookupByUUIDString (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * uuidstr)<br />
|
||||
</pre><p>Try to lookup a secret on the given hypervisor based on its UUID. Uses the printable string value to describe the UUID</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>uuidstr</tt></i>:</span></td><td>the string UUID for the secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new secret object or NULL in case of failure. If the secret cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_SECRET">VIR_ERR_NO_SECRET</a> error is raised.</td></tr></tbody></table></div><h3><a name="virSecretLookupByUsage" id="virSecretLookupByUsage"><code>virSecretLookupByUsage</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> virSecretLookupByUsage (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> int usageType, <br /> const char * usageID)<br />
|
||||
</pre><p>Try to lookup a secret on the given hypervisor based on its usage The usageID is unique within the set of secrets sharing the same usageType value.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>usageType</tt></i>:</span></td><td>the type of secret usage</td></tr><tr><td><span class="term"><i><tt>usageID</tt></i>:</span></td><td>identifier of the object using the secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new secret object or NULL in case of failure. If the secret cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_SECRET">VIR_ERR_NO_SECRET</a> error is raised.</td></tr></tbody></table></div><h3><a name="virSecretRef" id="virSecretRef"><code>virSecretRef</code></a></h3><pre class="programlisting">int virSecretRef (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br />
|
||||
</pre><p>Increment the reference count on the secret. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virSecretFree">virSecretFree</a> to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a secret would increment the reference count.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>the secret to hold a reference on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virSecretSetValue" id="virSecretSetValue"><code>virSecretSetValue</code></a></h3><pre class="programlisting">int virSecretSetValue (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret, <br /> const unsigned char * value, <br /> size_t value_size, <br /> unsigned int flags)<br />
|
||||
</pre><p>Sets the value of a secret.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>Value of the secret</td></tr><tr><td><span class="term"><i><tt>value_size</tt></i>:</span></td><td>Size of the value</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure.</td></tr></tbody></table></div><h3><a name="virSecretUndefine" id="virSecretUndefine"><code>virSecretUndefine</code></a></h3><pre class="programlisting">int virSecretUndefine (<a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> secret)<br />
|
||||
</pre><p>Deletes the specified secret. This does not free the associated <a href="libvirt-libvirt.html#virSecretPtr">virSecretPtr</a> object.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>secret</tt></i>:</span></td><td>A <a href="libvirt-libvirt.html#virSecret">virSecret</a> secret</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure.</td></tr></tbody></table></div><h3><a name="virStoragePoolBuild" id="virStoragePoolBuild"><code>virStoragePoolBuild</code></a></h3><pre class="programlisting">int virStoragePoolBuild (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
</pre><p>Build the underlying storage pool</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 upon failure</td></tr></tbody></table></div><h3><a name="virStoragePoolCreate" id="virStoragePoolCreate"><code>virStoragePoolCreate</code></a></h3><pre class="programlisting">int virStoragePoolCreate (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
</pre><p>Starts an inactive storage pool</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 if it could not be started</td></tr></tbody></table></div><h3><a name="virStoragePoolCreateXML" id="virStoragePoolCreateXML"><code>virStoragePoolCreateXML</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolCreateXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xmlDesc, <br /> unsigned int flags)<br />
|
||||
</pre><p>Create a new storage based on its XML description. The pool is not persistent, so its definition will disappear when it is destroyed, or if the host is restarted</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xmlDesc</tt></i>:</span></td><td>XML description for new pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div><h3><a name="virStoragePoolDefineXML" id="virStoragePoolDefineXML"><code>virStoragePoolDefineXML</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolDefineXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xml, <br /> unsigned int flags)<br />
|
||||
@ -542,7 +588,7 @@ int <a href="#virStorageVolRef">virStorageVolRef</a> (<a href="libvirt-libvirt.
|
||||
</pre><p>Increment the reference count on the pool. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virStoragePoolFree">virStoragePoolFree</a> to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a pool would increment the reference count.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>the pool to hold a reference on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virStoragePoolRefresh" id="virStoragePoolRefresh"><code>virStoragePoolRefresh</code></a></h3><pre class="programlisting">int virStoragePoolRefresh (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
</pre><p>Request that the pool refresh its list of volumes. This may involve communicating with a remote server, and/or initializing new devices at the OS layer</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags to control refresh behaviour (currently unused, use 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the volume list was refreshed, -1 on failure</td></tr></tbody></table></div><h3><a name="virStoragePoolSetAutostart" id="virStoragePoolSetAutostart"><code>virStoragePoolSetAutostart</code></a></h3><pre class="programlisting">int virStoragePoolSetAutostart (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> int autostart)<br />
|
||||
</pre><p>Sets the autostart flag</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>autostart</tt></i>:</span></td><td>new flag setting</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure</td></tr></tbody></table></div><h3><a name="virStoragePoolUndefine" id="virStoragePoolUndefine"><code>virStoragePoolUndefine</code></a></h3><pre class="programlisting">int virStoragePoolUndefine (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br />
|
||||
</pre><p>Undefine an inactive storage pool</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div><h3><a name="virStorageVolCreateXML" id="virStorageVolCreateXML"><code>virStorageVolCreateXML</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> virStorageVolCreateXML (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> const char * xmldesc, <br /> unsigned int flags)<br />
|
||||
</pre><p>Undefine an inactive storage pool</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure</td></tr></tbody></table></div><h3><a name="virStorageVolCreateXML" id="virStorageVolCreateXML"><code>virStorageVolCreateXML</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> virStorageVolCreateXML (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> const char * xmldesc, <br /> unsigned int flags)<br />
|
||||
</pre><p>Create a storage volume within a pool based on an XML description. Not all pools support creation of volumes</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>xmldesc</tt></i>:</span></td><td>description of volume to create</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for creation (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the storage volume, or NULL on error</td></tr></tbody></table></div><h3><a name="virStorageVolCreateXMLFrom" id="virStorageVolCreateXMLFrom"><code>virStorageVolCreateXMLFrom</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> virStorageVolCreateXMLFrom (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> const char * xmldesc, <br /> <a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> clonevol, <br /> unsigned int flags)<br />
|
||||
</pre><p>Create a storage volume in the parent pool, using the 'clonevol' volume as input. Information for the new volume (name, perms) are passed via a typical volume XML description.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to parent pool for the new volume</td></tr><tr><td><span class="term"><i><tt>xmldesc</tt></i>:</span></td><td>description of volume to create</td></tr><tr><td><span class="term"><i><tt>clonevol</tt></i>:</span></td><td>storage volume to use as input</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for creation (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the storage volume, or NULL on error</td></tr></tbody></table></div><h3><a name="virStorageVolDelete" id="virStorageVolDelete"><code>virStorageVolDelete</code></a></h3><pre class="programlisting">int virStorageVolDelete (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br /> unsigned int flags)<br />
|
||||
</pre><p>Delete the storage volume from the pool</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div><h3><a name="virStorageVolFree" id="virStorageVolFree"><code>virStorageVolFree</code></a></h3><pre class="programlisting">int virStorageVolFree (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
|
File diff suppressed because one or more lines are too long
@ -107,22 +107,50 @@
|
||||
<div id="content">
|
||||
<h1>Java API bindings</h1>
|
||||
<h2>Presentation</h2>
|
||||
<p>The Java bindings are currently a work in progress based mostly
|
||||
on the work of Toth Istvan. The first usable release is 0.2.0, where
|
||||
most of the naming conventions were defined. Further release will try
|
||||
as much as possible to stay compatible</p>
|
||||
<p>The Java bindings make use of <a href="https://jna.dev.java.net/">JNA</a>
|
||||
to expose the C API in a Java friendly way. The bindings are are based on
|
||||
work initiated by Toth Istvan.</p>
|
||||
<h2>Getting it</h2>
|
||||
<p>
|
||||
The latest versions of the libvirt Java bindings can be downloaded from:
|
||||
</p>
|
||||
<ul><li><a href="ftp://libvirt.org/libvirt/java/">libvirt.org FTP server</a></li><li><a href="http://libvirt.org/sources/java/">libvirt.org HTTP server</a></li></ul>
|
||||
<h2>Hourly development snapshots</h2>
|
||||
<p> Once an hour, an automated snapshot is made from the latest CVS server
|
||||
source tree. These snapshots should be usable, but we make no guarantees
|
||||
about their stability: </p>
|
||||
<ul><li><a href="ftp://libvirt.org/libvirt/java/libvirt-java-snapshot.tar.gz">libvirt.org FTP server</a></li><li><a href="http://libvirt.org/sources/java/libvirt-java-snapshot.tar.gz">libvirt.org HTTP server</a></li></ul>
|
||||
<h2>CVS repository access</h2>
|
||||
<p> The master source repository uses <a href="http://ximbiot.com/cvs/cvshome/docs/">CVS</a> and anonymous access
|
||||
<h3>Maven</h3>
|
||||
<p>A maven repository is located at <a href="http://www.libvirt.org/maven2/">http://www.libvirt.org/maven2/</a>
|
||||
which you can use to include this in your maven projects.</p>
|
||||
<h2>GIT source repository</h2>
|
||||
<p> The Java bindings code source is now maintained in a <a href="http://git-scm.com/">git</a> repository available on
|
||||
<a href="http://libvirt.org/git/">libvirt.org</a>:
|
||||
</p>
|
||||
<pre>
|
||||
git clone git://libvirt.org/libvirt-java.git
|
||||
</pre>
|
||||
<p>
|
||||
It can also be browsed at
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
<a href="http://libvirt.org/git/?p=libvirt-java.git;a=summary">http://libvirt.org/git/?p=libvirt-java.git;a=summary</a>
|
||||
</pre>
|
||||
<p></p>
|
||||
<h2>GIT repository mirror</h2>
|
||||
<p>
|
||||
The source code is also mirrored on <a href="http://www.gitorious.org">gitorious</a>
|
||||
to aid in public development. You clone the repo with
|
||||
</p>
|
||||
<pre>
|
||||
git clone git://gitorious.org/libvirt/libvirt-java.git
|
||||
</pre>
|
||||
<p>
|
||||
It can also be browsed at
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
<a href="http://gitorious.org/libvirt/libvirt-java">http://gitorious.org/libvirt/libvirt-java</a>
|
||||
</pre>
|
||||
<p></p>
|
||||
<h2>CVS repository access (Deprecated)</h2>
|
||||
<p> The old source repository uses <a href="http://ximbiot.com/cvs/cvshome/docs/">CVS</a> and anonymous access
|
||||
is provided. Prior to accessing the server is it necessary to authenticate
|
||||
using the password <code>anoncvs</code>. This can be accomplished with
|
||||
the <code>cvs login</code> command:
|
||||
@ -134,47 +162,20 @@ the <code>cvs login</code> command:
|
||||
Once authenticated, a checkout can be obtained using
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
# cvs -d :pserver:anoncvs@libvirt.org:2401/data/cvs co libvirt-java
|
||||
</pre>
|
||||
<p>
|
||||
The libvirt-java build process uses GNU autotools, so after obtaining a checkout
|
||||
it is necessary to generate the configure script and Makefile.in templates
|
||||
using the <code>autogen.sh</code> command. As an example, to do a complete
|
||||
build and install it into your home directory run:
|
||||
</p>
|
||||
<pre>
|
||||
./autogen.sh --prefix=$HOME/usr
|
||||
make
|
||||
make install
|
||||
</pre>
|
||||
<p>Other build system are not currently available but as usual we take patches
|
||||
(Eclipse/ant/...) would be welcome !</p>
|
||||
<p> currently libvirt-java requires a version of libvirt >= 0.4.0 to be
|
||||
installed as well as the associated libvirt development files/package. It
|
||||
should compile with any java implementation >= 1.5, the bindings uses
|
||||
the enum construct which appeared only in that version.</p>
|
||||
<p>Libvirt-java bindings development occurs on the same mailing-list as
|
||||
the normal libvirt work see <a href="contact.html">the associated contact
|
||||
page</a></p>
|
||||
<h2>GIT repository mirror</h2>
|
||||
<p>
|
||||
The CVS source repository is also mirrored using GIT, and is available
|
||||
for anonymous access via:
|
||||
</p>
|
||||
<pre>
|
||||
git clone git://git.et.redhat.com/libvirt-java
|
||||
</pre>
|
||||
<p>
|
||||
It can also be browsed at
|
||||
</p>
|
||||
<p></p>
|
||||
<h2>Building</h2>
|
||||
<p>The code is built using ant, and assumes that you have the jna jar installed. Once you have downloaded
|
||||
the code you can build the code with</p>
|
||||
<pre>
|
||||
|
||||
<a href="http://git.et.redhat.com/?p=libvirt-java.git;a=summary">http://git.et.redhat.com/?p=libvirt-java.git;a=summary</a>
|
||||
% cd libvirt-java
|
||||
% ant build
|
||||
</pre>
|
||||
<h2>Content</h2>
|
||||
<p>The bindings are articulated around a few
|
||||
classes in the <code>org/libvirt</code> namespace, notably the
|
||||
classes in the <code>org/libvirt</code> package, notably the
|
||||
<code>Connect</code>, <code>Domain</code> and <code>Network</code>
|
||||
ones. Functions in the <a href="html/libvirt-libvirt.html">C API</a>
|
||||
taking <code>virConnectPtr</code>, <code>virDomainPtr</code> or
|
||||
@ -192,13 +193,13 @@ lower case, for example the C functions:</p>
|
||||
</p>
|
||||
<p>become</p>
|
||||
<p>
|
||||
<code>virConn::numOfDomains()</code>
|
||||
<code>virConn.numOfDomains()</code>
|
||||
</p>
|
||||
<p>
|
||||
<code>virDomain::setMaxMemory(long memory)</code>
|
||||
<code>virDomain.setMaxMemory(long memory)</code>
|
||||
</p>
|
||||
<p> There is of course some functions where the mapping is less direct
|
||||
and using extra classes to map complex arguments. The <a href="http://libvirt.org/org/libvirt/package-summary.html">Javadoc</a> is available online or as
|
||||
and using extra classes to map complex arguments. The <a href="http://libvirt.org/sources/java/javadoc">Javadoc</a> is available online or as
|
||||
part of a separate libvirt-java-javadoc package.</p>
|
||||
<p>So let's look at a simple example inspired from the
|
||||
<code>test.java</code> test found in <code>src</code> in the source tree:</p>
|
||||
@ -226,7 +227,7 @@ public class minitest {
|
||||
</pre>
|
||||
<p>There is not much to comment about it, it really is a straight mapping
|
||||
from the C API, the only points to notice are:</p>
|
||||
<ul><li>the import of the modules in the <code><span style="color: #0071FF; background-color: #FFFFFF">org.libvirt</span></code> namespace</li><li>getting a connection to the hypervisor, in that case using the
|
||||
<ul><li>the import of the modules in the <code><span style="color: #0071FF; background-color: #FFFFFF">org.libvirt</span></code> package</li><li>getting a connection to the hypervisor, in that case using the
|
||||
readonly access to the default test hypervisor.</li><li>getting an object representing the test domain using <span style="color: #007F00; background-color: #FFFFFF">lookupByName</span></li><li>if the domain is not found a LibvirtError exception will be raised</li><li>extracting and printing some information about the domain using
|
||||
various <span style="color: #E50073; background-color: #FFFFFF">methods</span>
|
||||
associated to the Domain class.</li></ul>
|
||||
|
@ -4,10 +4,9 @@
|
||||
<h1>Java API bindings</h1>
|
||||
|
||||
<h2>Presentation</h2>
|
||||
<p>The Java bindings are currently a work in progress based mostly
|
||||
on the work of Toth Istvan. The first usable release is 0.2.0, where
|
||||
most of the naming conventions were defined. Further release will try
|
||||
as much as possible to stay compatible</p>
|
||||
<p>The Java bindings make use of <a href="https://jna.dev.java.net/">JNA</a>
|
||||
to expose the C API in a Java friendly way. The bindings are are based on
|
||||
work initiated by Toth Istvan.</p>
|
||||
|
||||
<h2>Getting it</h2>
|
||||
<p>
|
||||
@ -19,19 +18,51 @@ as much as possible to stay compatible</p>
|
||||
<li><a href="http://libvirt.org/sources/java/">libvirt.org HTTP server</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Hourly development snapshots</h2>
|
||||
<p> Once an hour, an automated snapshot is made from the latest CVS server
|
||||
source tree. These snapshots should be usable, but we make no guarantees
|
||||
about their stability: </p>
|
||||
<h3>Maven</h3>
|
||||
<p>A maven repository is located at <a href="http://www.libvirt.org/maven2/">http://www.libvirt.org/maven2/</a>
|
||||
which you can use to include this in your maven projects.</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="ftp://libvirt.org/libvirt/java/libvirt-java-snapshot.tar.gz">libvirt.org FTP server</a></li>
|
||||
<li><a href="http://libvirt.org/sources/java/libvirt-java-snapshot.tar.gz">libvirt.org HTTP server</a></li>
|
||||
</ul>
|
||||
<h2>GIT source repository</h2>
|
||||
<p> The Java bindings code source is now maintained in a <a
|
||||
href="http://git-scm.com/">git</a> repository available on
|
||||
<a href="http://libvirt.org/git/">libvirt.org</a>:
|
||||
</p>
|
||||
<pre>
|
||||
git clone git://libvirt.org/libvirt-java.git
|
||||
</pre>
|
||||
<p>
|
||||
It can also be browsed at
|
||||
</p>
|
||||
<pre>
|
||||
|
||||
<h2>CVS repository access</h2>
|
||||
<a href="http://libvirt.org/git/?p=libvirt-java.git;a=summary">http://libvirt.org/git/?p=libvirt-java.git;a=summary</a>
|
||||
</pre>
|
||||
|
||||
<p> The master source repository uses <a
|
||||
<p></p>
|
||||
<h2>GIT repository mirror</h2>
|
||||
|
||||
<p>
|
||||
The source code is also mirrored on <a href="http://www.gitorious.org">gitorious</a>
|
||||
to aid in public development. You clone the repo with
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
git clone git://gitorious.org/libvirt/libvirt-java.git
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
It can also be browsed at
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
|
||||
<a href="http://gitorious.org/libvirt/libvirt-java">http://gitorious.org/libvirt/libvirt-java</a>
|
||||
</pre>
|
||||
|
||||
<p></p>
|
||||
<h2>CVS repository access (Deprecated)</h2>
|
||||
|
||||
<p> The old source repository uses <a
|
||||
href="http://ximbiot.com/cvs/cvshome/docs/">CVS</a> and anonymous access
|
||||
is provided. Prior to accessing the server is it necessary to authenticate
|
||||
using the password <code>anoncvs</code>. This can be accomplished with
|
||||
@ -47,54 +78,24 @@ the <code>cvs login</code> command:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
|
||||
# cvs -d :pserver:anoncvs@libvirt.org:2401/data/cvs co libvirt-java
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
The libvirt-java build process uses GNU autotools, so after obtaining a checkout
|
||||
it is necessary to generate the configure script and Makefile.in templates
|
||||
using the <code>autogen.sh</code> command. As an example, to do a complete
|
||||
build and install it into your home directory run:
|
||||
</p>
|
||||
<pre>
|
||||
./autogen.sh --prefix=$HOME/usr
|
||||
make
|
||||
make install
|
||||
</pre>
|
||||
<p>Other build system are not currently available but as usual we take patches
|
||||
(Eclipse/ant/...) would be welcome !</p>
|
||||
<p> currently libvirt-java requires a version of libvirt >= 0.4.0 to be
|
||||
installed as well as the associated libvirt development files/package. It
|
||||
should compile with any java implementation >= 1.5, the bindings uses
|
||||
the enum construct which appeared only in that version.</p>
|
||||
<p>Libvirt-java bindings development occurs on the same mailing-list as
|
||||
the normal libvirt work see <a href="contact.html">the associated contact
|
||||
page</a></p>
|
||||
|
||||
<h2>GIT repository mirror</h2>
|
||||
|
||||
<p>
|
||||
The CVS source repository is also mirrored using GIT, and is available
|
||||
for anonymous access via:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
git clone git://git.et.redhat.com/libvirt-java
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
It can also be browsed at
|
||||
</p>
|
||||
<p></p>
|
||||
<h2>Building</h2>
|
||||
<p>The code is built using ant, and assumes that you have the jna jar installed. Once you have downloaded
|
||||
the code you can build the code with</p>
|
||||
|
||||
<pre>
|
||||
|
||||
<a href="http://git.et.redhat.com/?p=libvirt-java.git;a=summary">http://git.et.redhat.com/?p=libvirt-java.git;a=summary</a>
|
||||
% cd libvirt-java
|
||||
% ant build
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>Content</h2>
|
||||
<p>The bindings are articulated around a few
|
||||
classes in the <code>org/libvirt</code> namespace, notably the
|
||||
classes in the <code>org/libvirt</code> package, notably the
|
||||
<code>Connect</code>, <code>Domain</code> and <code>Network</code>
|
||||
ones. Functions in the <a href="html/libvirt-libvirt.html">C API</a>
|
||||
taking <code>virConnectPtr</code>, <code>virDomainPtr</code> or
|
||||
@ -112,13 +113,13 @@ lower case, for example the C functions:</p>
|
||||
</p>
|
||||
<p>become</p>
|
||||
<p>
|
||||
<code>virConn::numOfDomains()</code>
|
||||
<code>virConn.numOfDomains()</code>
|
||||
</p>
|
||||
<p>
|
||||
<code>virDomain::setMaxMemory(long memory)</code>
|
||||
<code>virDomain.setMaxMemory(long memory)</code>
|
||||
</p>
|
||||
<p> There is of course some functions where the mapping is less direct
|
||||
and using extra classes to map complex arguments. The <a href="http://libvirt.org/org/libvirt/package-summary.html">Javadoc</a> is available online or as
|
||||
and using extra classes to map complex arguments. The <a href="http://libvirt.org/sources/java/javadoc">Javadoc</a> is available online or as
|
||||
part of a separate libvirt-java-javadoc package.</p>
|
||||
<p>So let's look at a simple example inspired from the
|
||||
<code>test.java</code> test found in <code>src</code> in the source tree:</p>
|
||||
@ -147,7 +148,7 @@ public class minitest {
|
||||
<p>There is not much to comment about it, it really is a straight mapping
|
||||
from the C API, the only points to notice are:</p>
|
||||
<ul>
|
||||
<li>the import of the modules in the <code><span style="color: #0071FF; background-color: #FFFFFF">org.libvirt</span></code> namespace</li>
|
||||
<li>the import of the modules in the <code><span style="color: #0071FF; background-color: #FFFFFF">org.libvirt</span></code> package</li>
|
||||
<li>getting a connection to the hypervisor, in that case using the
|
||||
readonly access to the default test hypervisor.</li>
|
||||
<li>getting an object representing the test domain using <span style="color: #007F00; background-color: #FFFFFF">lookupByName</span></li>
|
||||
|
@ -98,4 +98,3 @@ dependence to Xen code as the interfaces stabilize.
|
||||
Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
Mon Oct 24 18:40:19 CEST 2005
|
||||
|
||||
|
@ -45,12 +45,14 @@
|
||||
<exports symbol='VIR_MIGRATE_LIVE' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_EVENT_STOPPED_DESTROYED' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_EVENT_DEFINED_ADDED' type='enum'/>
|
||||
<exports symbol='VIR_SECRET_USAGE_TYPE_NONE' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_EVENT_STARTED_MIGRATED' type='enum'/>
|
||||
<exports symbol='VIR_VCPU_BLOCKED' type='enum'/>
|
||||
<exports symbol='VIR_MEMORY_VIRTUAL' type='enum'/>
|
||||
<exports symbol='VIR_CRED_USERNAME' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_EVENT_RESUMED_UNPAUSED' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_RUNNING' type='enum'/>
|
||||
<exports symbol='VIR_STORAGE_VOL_DELETE_ZEROED' type='enum'/>
|
||||
<exports symbol='VIR_EVENT_HANDLE_ERROR' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_NOSTATE' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_SHUTOFF' type='enum'/>
|
||||
@ -60,13 +62,14 @@
|
||||
<exports symbol='VIR_STORAGE_POOL_BUILD_NEW' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_EVENT_SUSPENDED_PAUSED' type='enum'/>
|
||||
<exports symbol='VIR_STORAGE_POOL_DELETE_NORMAL' type='enum'/>
|
||||
<exports symbol='VIR_STORAGE_VOL_DELETE_ZEROED' type='enum'/>
|
||||
<exports symbol='VIR_MEMORY_PHYSICAL' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_SCHED_FIELD_INT' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_SCHED_FIELD_ULLONG' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN' type='enum'/>
|
||||
<exports symbol='VIR_CRED_REALM' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_EVENT_STARTED' type='enum'/>
|
||||
<exports symbol='VIR_STORAGE_VOL_FILE' type='enum'/>
|
||||
<exports symbol='VIR_SECRET_USAGE_TYPE_VOLUME' type='enum'/>
|
||||
<exports symbol='VIR_EVENT_HANDLE_HANGUP' type='enum'/>
|
||||
<exports symbol='VIR_DOMAIN_PAUSED' type='enum'/>
|
||||
<exports symbol='VIR_STORAGE_POOL_DEGRADED' type='enum'/>
|
||||
@ -96,6 +99,7 @@
|
||||
<exports symbol='virDomainEventResumedDetailType' type='typedef'/>
|
||||
<exports symbol='virDomainBlockStatsPtr' type='typedef'/>
|
||||
<exports symbol='virConnect' type='typedef'/>
|
||||
<exports symbol='virSecretPtr' type='typedef'/>
|
||||
<exports symbol='virDomainEventStartedDetailType' type='typedef'/>
|
||||
<exports symbol='virDomainInfo' type='typedef'/>
|
||||
<exports symbol='virStoragePoolDeleteFlags' type='typedef'/>
|
||||
@ -104,6 +108,7 @@
|
||||
<exports symbol='virDomainEventType' type='typedef'/>
|
||||
<exports symbol='virDomainInterfaceStatsStruct' type='typedef'/>
|
||||
<exports symbol='virStoragePoolInfo' type='typedef'/>
|
||||
<exports symbol='virSecret' type='typedef'/>
|
||||
<exports symbol='virDomainState' type='typedef'/>
|
||||
<exports symbol='virDomain' type='typedef'/>
|
||||
<exports symbol='virDomainInterfaceStatsPtr' type='typedef'/>
|
||||
@ -149,6 +154,7 @@
|
||||
<exports symbol='virDomainCreateFlags' type='typedef'/>
|
||||
<exports symbol='virSecurityLabelPtr' type='typedef'/>
|
||||
<exports symbol='virSecurityModel' type='typedef'/>
|
||||
<exports symbol='virSecretUsageType' type='typedef'/>
|
||||
<exports symbol='_virDomainInfo' type='struct'/>
|
||||
<exports symbol='_virConnectAuth' type='struct'/>
|
||||
<exports symbol='_virVcpuInfo' type='struct'/>
|
||||
@ -163,16 +169,18 @@
|
||||
<exports symbol='_virSchedParameter' type='struct'/>
|
||||
<exports symbol='virConnectAuthPtrDefault' type='variable'/>
|
||||
<exports symbol='virStoragePoolGetXMLDesc' type='function'/>
|
||||
<exports symbol='virSecretGetUUIDString' type='function'/>
|
||||
<exports symbol='virStorageVolGetKey' type='function'/>
|
||||
<exports symbol='virEventUpdateTimeoutFunc' type='function'/>
|
||||
<exports symbol='virConnectClose' type='function'/>
|
||||
<exports symbol='virDomainUndefine' type='function'/>
|
||||
<exports symbol='virDomainDefineXML' type='function'/>
|
||||
<exports symbol='virDomainShutdown' type='function'/>
|
||||
<exports symbol='virConnectListStoragePools' type='function'/>
|
||||
<exports symbol='virConnectListDefinedInterfaces' type='function'/>
|
||||
<exports symbol='virGetVersion' type='function'/>
|
||||
<exports symbol='virNodeGetCellsFreeMemory' type='function'/>
|
||||
<exports symbol='virInitialize' type='function'/>
|
||||
<exports symbol='virNodeDeviceGetName' type='function'/>
|
||||
<exports symbol='virConnectNumOfSecrets' type='function'/>
|
||||
<exports symbol='virStoragePoolSetAutostart' type='function'/>
|
||||
<exports symbol='virConnectDomainXMLFromNative' type='function'/>
|
||||
<exports symbol='virNodeDeviceDettach' type='function'/>
|
||||
@ -181,7 +189,7 @@
|
||||
<exports symbol='virDomainGetSchedulerParameters' type='function'/>
|
||||
<exports symbol='virDomainLookupByUUIDString' type='function'/>
|
||||
<exports symbol='virConnectNumOfDefinedNetworks' type='function'/>
|
||||
<exports symbol='virConnectNumOfDomains' type='function'/>
|
||||
<exports symbol='virConnectListStoragePools' type='function'/>
|
||||
<exports symbol='virNetworkGetUUID' type='function'/>
|
||||
<exports symbol='virInterfaceGetXMLDesc' type='function'/>
|
||||
<exports symbol='virStoragePoolGetConnect' type='function'/>
|
||||
@ -194,6 +202,7 @@
|
||||
<exports symbol='virStorageVolLookupByPath' type='function'/>
|
||||
<exports symbol='virStorageVolLookupByName' type='function'/>
|
||||
<exports symbol='virNetworkCreate' type='function'/>
|
||||
<exports symbol='virSecretLookupByUUID' type='function'/>
|
||||
<exports symbol='virDomainSetMaxMemory' type='function'/>
|
||||
<exports symbol='virEventRegisterImpl' type='function'/>
|
||||
<exports symbol='virInterfaceDefineXML' type='function'/>
|
||||
@ -205,11 +214,13 @@
|
||||
<exports symbol='virDomainDestroy' type='function'/>
|
||||
<exports symbol='virConnectNumOfNetworks' type='function'/>
|
||||
<exports symbol='virStoragePoolLookupByUUIDString' type='function'/>
|
||||
<exports symbol='virSecretGetConnect' type='function'/>
|
||||
<exports symbol='virInterfaceCreate' type='function'/>
|
||||
<exports symbol='virDomainGetXMLDesc' type='function'/>
|
||||
<exports symbol='virSecretLookupByUsage' type='function'/>
|
||||
<exports symbol='virStoragePoolGetUUID' type='function'/>
|
||||
<exports symbol='virNodeDeviceFree' type='function'/>
|
||||
<exports symbol='virStorageVolGetInfo' type='function'/>
|
||||
<exports symbol='virSecretGetUsageType' type='function'/>
|
||||
<exports symbol='virDomainGetInfo' type='function'/>
|
||||
<exports symbol='virNodeDeviceCreateXML' type='function'/>
|
||||
<exports symbol='virNetworkDestroy' type='function'/>
|
||||
@ -231,41 +242,48 @@
|
||||
<exports symbol='virStoragePoolCreate' type='function'/>
|
||||
<exports symbol='virNodeGetInfo' type='function'/>
|
||||
<exports symbol='virNetworkSetAutostart' type='function'/>
|
||||
<exports symbol='virSecretLookupByUUIDString' type='function'/>
|
||||
<exports symbol='virDomainGetMaxMemory' type='function'/>
|
||||
<exports symbol='virStoragePoolFree' type='function'/>
|
||||
<exports symbol='virConnectNumOfDefinedInterfaces' type='function'/>
|
||||
<exports symbol='virFreeCallback' type='function'/>
|
||||
<exports symbol='virNetworkDefineXML' type='function'/>
|
||||
<exports symbol='virNodeDeviceListCaps' type='function'/>
|
||||
<exports symbol='virDomainBlockStats' type='function'/>
|
||||
<exports symbol='virConnectOpenAuth' type='function'/>
|
||||
<exports symbol='virStoragePoolDelete' type='function'/>
|
||||
<exports symbol='virEventRemoveHandleFunc' type='function'/>
|
||||
<exports symbol='virDomainResume' type='function'/>
|
||||
<exports symbol='virStorageVolGetName' type='function'/>
|
||||
<exports symbol='virStoragePoolGetAutostart' type='function'/>
|
||||
<exports symbol='virDomainGetAutostart' type='function'/>
|
||||
<exports symbol='virStoragePoolListVolumes' type='function'/>
|
||||
<exports symbol='virConnectGetHostname' type='function'/>
|
||||
<exports symbol='virEventRemoveTimeoutFunc' type='function'/>
|
||||
<exports symbol='virStorageVolGetInfo' type='function'/>
|
||||
<exports symbol='virDomainGetName' type='function'/>
|
||||
<exports symbol='virStoragePoolRef' type='function'/>
|
||||
<exports symbol='virNetworkGetXMLDesc' type='function'/>
|
||||
<exports symbol='virConnectNumOfStoragePools' type='function'/>
|
||||
<exports symbol='virInterfaceGetConnect' type='function'/>
|
||||
<exports symbol='virStoragePoolNumOfVolumes' type='function'/>
|
||||
<exports symbol='virNetworkGetName' type='function'/>
|
||||
<exports symbol='virSecretGetXMLDesc' type='function'/>
|
||||
<exports symbol='virConnectListDefinedDomains' type='function'/>
|
||||
<exports symbol='virConnectGetCapabilities' type='function'/>
|
||||
<exports symbol='virDomainLookupByName' type='function'/>
|
||||
<exports symbol='virConnectFindStoragePoolSources' type='function'/>
|
||||
<exports symbol='virStorageVolFree' type='function'/>
|
||||
<exports symbol='virDomainPinVcpu' type='function'/>
|
||||
<exports symbol='virNodeGetSecurityModel' type='function'/>
|
||||
<exports symbol='virDomainRestore' type='function'/>
|
||||
<exports symbol='virSecretGetUUID' type='function'/>
|
||||
<exports symbol='virNodeDeviceDestroy' type='function'/>
|
||||
<exports symbol='virStorageVolGetPath' type='function'/>
|
||||
<exports symbol='virNetworkLookupByUUIDString' type='function'/>
|
||||
<exports symbol='virConnectDomainEventCallback' type='function'/>
|
||||
<exports symbol='virDomainLookupByID' type='function'/>
|
||||
<exports symbol='virStorageVolDelete' type='function'/>
|
||||
<exports symbol='virStorageVolFree' type='function'/>
|
||||
<exports symbol='virSecretUndefine' type='function'/>
|
||||
<exports symbol='virConnectListInterfaces' type='function'/>
|
||||
<exports symbol='virDomainMemoryPeek' type='function'/>
|
||||
<exports symbol='virNetworkLookupByUUID' type='function'/>
|
||||
@ -273,18 +291,19 @@
|
||||
<exports symbol='virConnectRef' type='function'/>
|
||||
<exports symbol='virDomainGetUUID' type='function'/>
|
||||
<exports symbol='virNetworkCreateXML' type='function'/>
|
||||
<exports symbol='virNetworkUndefine' type='function'/>
|
||||
<exports symbol='virConnectDomainEventRegister' type='function'/>
|
||||
<exports symbol='virDomainGetVcpus' type='function'/>
|
||||
<exports symbol='virNodeDeviceLookupByName' type='function'/>
|
||||
<exports symbol='virStoragePoolGetInfo' type='function'/>
|
||||
<exports symbol='virDomainResume' type='function'/>
|
||||
<exports symbol='virEventRemoveHandleFunc' type='function'/>
|
||||
<exports symbol='virInterfaceRef' type='function'/>
|
||||
<exports symbol='virInterfaceGetMACString' type='function'/>
|
||||
<exports symbol='virNetworkRef' type='function'/>
|
||||
<exports symbol='virConnectNumOfDomains' type='function'/>
|
||||
<exports symbol='virStoragePoolRefresh' type='function'/>
|
||||
<exports symbol='virConnectNumOfDefinedDomains' type='function'/>
|
||||
<exports symbol='virStorageVolCreateXMLFrom' type='function'/>
|
||||
<exports symbol='virDomainUndefine' type='function'/>
|
||||
<exports symbol='virConnectClose' type='function'/>
|
||||
<exports symbol='virDomainReboot' type='function'/>
|
||||
<exports symbol='virNetworkGetUUIDString' type='function'/>
|
||||
<exports symbol='virNetworkLookupByName' type='function'/>
|
||||
@ -293,7 +312,7 @@
|
||||
<exports symbol='virDomainGetSchedulerType' type='function'/>
|
||||
<exports symbol='virNodeDeviceReset' type='function'/>
|
||||
<exports symbol='virDomainDetachDevice' type='function'/>
|
||||
<exports symbol='virStoragePoolNumOfVolumes' type='function'/>
|
||||
<exports symbol='virSecretGetUsageID' type='function'/>
|
||||
<exports symbol='virStoragePoolGetUUIDString' type='function'/>
|
||||
<exports symbol='virNodeDeviceReAttach' type='function'/>
|
||||
<exports symbol='virStoragePoolUndefine' type='function'/>
|
||||
@ -301,10 +320,11 @@
|
||||
<exports symbol='virDomainAttachDevice' type='function'/>
|
||||
<exports symbol='virConnectGetURI' type='function'/>
|
||||
<exports symbol='virConnectOpenReadOnly' type='function'/>
|
||||
<exports symbol='virSecretDefineXML' type='function'/>
|
||||
<exports symbol='virNetworkFree' type='function'/>
|
||||
<exports symbol='virStoragePoolLookupByUUID' type='function'/>
|
||||
<exports symbol='virEventAddHandleFunc' type='function'/>
|
||||
<exports symbol='virNetworkUndefine' type='function'/>
|
||||
<exports symbol='virNetworkRef' type='function'/>
|
||||
<exports symbol='virConnectListDefinedStoragePools' type='function'/>
|
||||
<exports symbol='virEventTimeoutCallback' type='function'/>
|
||||
<exports symbol='virInterfaceFree' type='function'/>
|
||||
@ -313,6 +333,7 @@
|
||||
<exports symbol='virNetworkGetConnect' type='function'/>
|
||||
<exports symbol='virNodeGetFreeMemory' type='function'/>
|
||||
<exports symbol='virInterfaceDestroy' type='function'/>
|
||||
<exports symbol='virSecretSetValue' type='function'/>
|
||||
<exports symbol='virStorageVolGetConnect' type='function'/>
|
||||
<exports symbol='virNodeNumOfDevices' type='function'/>
|
||||
<exports symbol='virStoragePoolDestroy' type='function'/>
|
||||
@ -324,6 +345,7 @@
|
||||
<exports symbol='virDomainGetUUIDString' type='function'/>
|
||||
<exports symbol='virDomainGetConnect' type='function'/>
|
||||
<exports symbol='virConnectNumOfDefinedStoragePools' type='function'/>
|
||||
<exports symbol='virSecretFree' type='function'/>
|
||||
<exports symbol='virNodeListDevices' type='function'/>
|
||||
<exports symbol='virNodeDeviceGetParent' type='function'/>
|
||||
<exports symbol='virConnectOpen' type='function'/>
|
||||
@ -332,13 +354,16 @@
|
||||
<exports symbol='virInterfaceUndefine' type='function'/>
|
||||
<exports symbol='virDomainSetVcpus' type='function'/>
|
||||
<exports symbol='virDomainRef' type='function'/>
|
||||
<exports symbol='virConnectListSecrets' type='function'/>
|
||||
<exports symbol='virConnectNumOfInterfaces' type='function'/>
|
||||
<exports symbol='virDomainGetID' type='function'/>
|
||||
<exports symbol='virSecretRef' type='function'/>
|
||||
<exports symbol='virDomainBlockPeek' type='function'/>
|
||||
<exports symbol='virEventAddTimeoutFunc' type='function'/>
|
||||
<exports symbol='virInterfaceLookupByName' type='function'/>
|
||||
<exports symbol='virDomainInterfaceStats' type='function'/>
|
||||
<exports symbol='virConnectListNetworks' type='function'/>
|
||||
<exports symbol='virSecretGetValue' type='function'/>
|
||||
<exports symbol='virStorageVolLookupByKey' type='function'/>
|
||||
</file>
|
||||
<file name='virterror'>
|
||||
@ -352,12 +377,14 @@
|
||||
<exports symbol='VIR_ERR_NO_MEMORY' type='enum'/>
|
||||
<exports symbol='VIR_WAR_NO_NODE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_STORAGE_VOL' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XML' type='enum'/>
|
||||
<exports symbol='VIR_FROM_CONF' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_NETWORK' type='enum'/>
|
||||
<exports symbol='VIR_ERR_PARSE_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_ERR_POST_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_CONN' type='enum'/>
|
||||
<exports symbol='VIR_ERR_GET_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XEN' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_SOURCE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NETWORK_EXIST' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NONE' type='enum'/>
|
||||
@ -367,9 +394,10 @@
|
||||
<exports symbol='VIR_ERR_READ_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_FROM_INTERFACE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_CONNECT' type='enum'/>
|
||||
<exports symbol='VIR_ERR_CALL_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_FROM_ESX' type='enum'/>
|
||||
<exports symbol='VIR_FROM_VBOX' type='enum'/>
|
||||
<exports symbol='VIR_FROM_TEST' type='enum'/>
|
||||
<exports symbol='VIR_ERR_MULTIPLE_INTERFACES' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_DEVICE' type='enum'/>
|
||||
<exports symbol='VIR_FROM_SEXPR' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_MAC' type='enum'/>
|
||||
@ -379,6 +407,7 @@
|
||||
<exports symbol='VIR_FROM_STATS_LINUX' type='enum'/>
|
||||
<exports symbol='VIR_FROM_OPENVZ' type='enum'/>
|
||||
<exports symbol='VIR_ERR_OS_TYPE' type='enum'/>
|
||||
<exports symbol='VIR_WAR_NO_SECRET' type='enum'/>
|
||||
<exports symbol='VIR_WAR_NO_NETWORK' type='enum'/>
|
||||
<exports symbol='VIR_FROM_UML' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_NAME' type='enum'/>
|
||||
@ -390,6 +419,7 @@
|
||||
<exports symbol='VIR_ERR_CONF_SYNTAX' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_SUPPORT' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_SECURITY_MODEL' type='enum'/>
|
||||
<exports symbol='VIR_FROM_PHYP' type='enum'/>
|
||||
<exports symbol='VIR_ERR_SEXPR_SERIAL' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XENSTORE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_OPEN_FAILED' type='enum'/>
|
||||
@ -403,20 +433,22 @@
|
||||
<exports symbol='VIR_ERR_GNUTLS_ERROR' type='enum'/>
|
||||
<exports symbol='VIR_ERR_XML_ERROR' type='enum'/>
|
||||
<exports symbol='VIR_ERR_OK' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_INTERFACE' type='enum'/>
|
||||
<exports symbol='VIR_FROM_STORAGE' type='enum'/>
|
||||
<exports symbol='VIR_FROM_PROXY' type='enum'/>
|
||||
<exports symbol='VIR_ERR_DRIVER_FULL' type='enum'/>
|
||||
<exports symbol='VIR_FROM_DOMAIN' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XML' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_SECRET' type='enum'/>
|
||||
<exports symbol='VIR_ERR_OPERATION_DENIED' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_STORAGE_POOL' type='enum'/>
|
||||
<exports symbol='VIR_FROM_SECRET' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_DOMAIN' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XEN' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_INTERFACE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_RPC' type='enum'/>
|
||||
<exports symbol='VIR_ERR_WARNING' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_ARG' type='enum'/>
|
||||
<exports symbol='VIR_ERR_CALL_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_ERR_ERROR' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_SECRET' type='enum'/>
|
||||
<exports symbol='VIR_WAR_NO_INTERFACE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_DOM_EXIST' type='enum'/>
|
||||
<exports symbol='VIR_FROM_LXC' type='enum'/>
|
||||
@ -577,12 +609,14 @@
|
||||
<enum name='VIR_ERR_INVALID_ARG' file='virterror' value='8' type='virErrorNumber' info='invalid function argument'/>
|
||||
<enum name='VIR_ERR_INVALID_CONN' file='virterror' value='6' type='virErrorNumber' info='invalid connection object'/>
|
||||
<enum name='VIR_ERR_INVALID_DOMAIN' file='virterror' value='7' type='virErrorNumber' info='invalid domain object'/>
|
||||
<enum name='VIR_ERR_INVALID_INTERFACE' file='virterror' value='58' type='virErrorNumber' info=' invalid interface object'/>
|
||||
<enum name='VIR_ERR_INVALID_INTERFACE' file='virterror' value='58' type='virErrorNumber' info='invalid interface object'/>
|
||||
<enum name='VIR_ERR_INVALID_MAC' file='virterror' value='44' type='virErrorNumber' info='invalid MAC address'/>
|
||||
<enum name='VIR_ERR_INVALID_NETWORK' file='virterror' value='36' type='virErrorNumber' info='invalid network object'/>
|
||||
<enum name='VIR_ERR_INVALID_NODE_DEVICE' file='virterror' value='52' type='virErrorNumber' info='invalid node device object'/>
|
||||
<enum name='VIR_ERR_INVALID_SECRET' file='virterror' value='61' type='virErrorNumber' info='invalid secret'/>
|
||||
<enum name='VIR_ERR_INVALID_STORAGE_POOL' file='virterror' value='46' type='virErrorNumber' info='invalid storage pool object'/>
|
||||
<enum name='VIR_ERR_INVALID_STORAGE_VOL' file='virterror' value='47' type='virErrorNumber' info='invalid storage vol object'/>
|
||||
<enum name='VIR_ERR_MULTIPLE_INTERFACES' file='virterror' value='59' type='virErrorNumber' info='more than one matching interface found'/>
|
||||
<enum name='VIR_ERR_NETWORK_EXIST' file='virterror' value='37' type='virErrorNumber' info='the network already exist'/>
|
||||
<enum name='VIR_ERR_NONE' file='virterror' value='0' type='virErrorLevel'/>
|
||||
<enum name='VIR_ERR_NO_CONNECT' file='virterror' value='5' type='virErrorNumber' info='can't connect to hypervisor'/>
|
||||
@ -596,6 +630,7 @@
|
||||
<enum name='VIR_ERR_NO_NODE_DEVICE' file='virterror' value='53' type='virErrorNumber' info='node device not found'/>
|
||||
<enum name='VIR_ERR_NO_OS' file='virterror' value='22' type='virErrorNumber' info='missing domain OS information'/>
|
||||
<enum name='VIR_ERR_NO_ROOT' file='virterror' value='18' type='virErrorNumber' info='missing root device information'/>
|
||||
<enum name='VIR_ERR_NO_SECRET' file='virterror' value='62' type='virErrorNumber' info=' secret not found'/>
|
||||
<enum name='VIR_ERR_NO_SECURITY_MODEL' file='virterror' value='54' type='virErrorNumber' info='security model not found'/>
|
||||
<enum name='VIR_ERR_NO_SOURCE' file='virterror' value='19' type='virErrorNumber' info='missing source device information'/>
|
||||
<enum name='VIR_ERR_NO_STORAGE_POOL' file='virterror' value='49' type='virErrorNumber' info='storage pool not found'/>
|
||||
@ -629,18 +664,21 @@
|
||||
<enum name='VIR_FROM_CONF' file='virterror' value='9' type='virErrorDomain' info='Error in the configuration file handling'/>
|
||||
<enum name='VIR_FROM_DOM' file='virterror' value='6' type='virErrorDomain' info='Error when operating on a domain'/>
|
||||
<enum name='VIR_FROM_DOMAIN' file='virterror' value='20' type='virErrorDomain' info='Error from domain config'/>
|
||||
<enum name='VIR_FROM_ESX' file='virterror' value='28' type='virErrorDomain' info='Error from ESX driver'/>
|
||||
<enum name='VIR_FROM_INTERFACE' file='virterror' value='26' type='virErrorDomain' info='Error when operating on an interface'/>
|
||||
<enum name='VIR_FROM_LXC' file='virterror' value='17' type='virErrorDomain' info='Error from Linux Container driver'/>
|
||||
<enum name='VIR_FROM_NET' file='virterror' value='11' type='virErrorDomain' info='Error when operating on a network'/>
|
||||
<enum name='VIR_FROM_NETWORK' file='virterror' value='19' type='virErrorDomain' info='Error from network config'/>
|
||||
<enum name='VIR_FROM_NODEDEV' file='virterror' value='22' type='virErrorDomain' info='Error from node device monitor'/>
|
||||
<enum name='VIR_FROM_NONE' file='virterror' value='0' type='virErrorDomain'/>
|
||||
<enum name='VIR_FROM_ONE' file='virterror' value='27' type='virErrorDomain' info=' Error from OpenNebula driver'/>
|
||||
<enum name='VIR_FROM_ONE' file='virterror' value='27' type='virErrorDomain' info='Error from OpenNebula driver'/>
|
||||
<enum name='VIR_FROM_OPENVZ' file='virterror' value='14' type='virErrorDomain' info='Error from OpenVZ driver'/>
|
||||
<enum name='VIR_FROM_PHYP' file='virterror' value='29' type='virErrorDomain' info='Error from IBM power hypervisor'/>
|
||||
<enum name='VIR_FROM_PROXY' file='virterror' value='8' type='virErrorDomain' info='Error in the proxy code'/>
|
||||
<enum name='VIR_FROM_QEMU' file='virterror' value='10' type='virErrorDomain' info='Error at the QEMU daemon'/>
|
||||
<enum name='VIR_FROM_REMOTE' file='virterror' value='13' type='virErrorDomain' info='Error from remote driver'/>
|
||||
<enum name='VIR_FROM_RPC' file='virterror' value='7' type='virErrorDomain' info='Error in the XML-RPC code'/>
|
||||
<enum name='VIR_FROM_SECRET' file='virterror' value='30' type='virErrorDomain' info=' Error from secret storage'/>
|
||||
<enum name='VIR_FROM_SECURITY' file='virterror' value='24' type='virErrorDomain' info='Error from security framework'/>
|
||||
<enum name='VIR_FROM_SEXPR' file='virterror' value='4' type='virErrorDomain' info='Error in the S-Expression code'/>
|
||||
<enum name='VIR_FROM_STATS_LINUX' file='virterror' value='16' type='virErrorDomain' info='Error in the Linux Stats code'/>
|
||||
@ -654,8 +692,11 @@
|
||||
<enum name='VIR_FROM_XENXM' file='virterror' value='15' type='virErrorDomain' info='Error at Xen XM layer'/>
|
||||
<enum name='VIR_FROM_XEN_INOTIFY' file='virterror' value='23' type='virErrorDomain' info='Error from xen inotify layer'/>
|
||||
<enum name='VIR_FROM_XML' file='virterror' value='5' type='virErrorDomain' info='Error in the XML code'/>
|
||||
<enum name='VIR_MEMORY_VIRTUAL' file='libvirt' value='1' type='virDomainMemoryFlags' info=' addresses are virtual addresses'/>
|
||||
<enum name='VIR_MEMORY_PHYSICAL' file='libvirt' value='2' type='virDomainMemoryFlags' info=' addresses are physical addresses'/>
|
||||
<enum name='VIR_MEMORY_VIRTUAL' file='libvirt' value='1' type='virDomainMemoryFlags' info='addresses are virtual addresses'/>
|
||||
<enum name='VIR_MIGRATE_LIVE' file='libvirt' value='1' type='virDomainMigrateFlags' info=' live migration'/>
|
||||
<enum name='VIR_SECRET_USAGE_TYPE_NONE' file='libvirt' value='0' type='virSecretUsageType'/>
|
||||
<enum name='VIR_SECRET_USAGE_TYPE_VOLUME' file='libvirt' value='1' type='virSecretUsageType' info=' Expect more owner types later...'/>
|
||||
<enum name='VIR_STORAGE_POOL_BUILDING' file='libvirt' value='1' type='virStoragePoolState' info='Initializing pool, not available'/>
|
||||
<enum name='VIR_STORAGE_POOL_BUILD_NEW' file='libvirt' value='0' type='virStoragePoolBuildFlags' info='Regular build from scratch'/>
|
||||
<enum name='VIR_STORAGE_POOL_BUILD_REPAIR' file='libvirt' value='1' type='virStoragePoolBuildFlags' info='Repair / reinitialize'/>
|
||||
@ -675,6 +716,7 @@
|
||||
<enum name='VIR_WAR_NO_INTERFACE' file='virterror' value='56' type='virErrorNumber' info='failed to start interface driver'/>
|
||||
<enum name='VIR_WAR_NO_NETWORK' file='virterror' value='41' type='virErrorNumber' info='failed to start network'/>
|
||||
<enum name='VIR_WAR_NO_NODE' file='virterror' value='51' type='virErrorNumber' info='failed to start node driver'/>
|
||||
<enum name='VIR_WAR_NO_SECRET' file='virterror' value='60' type='virErrorNumber' info='failed to start secret storage'/>
|
||||
<enum name='VIR_WAR_NO_STORAGE' file='virterror' value='48' type='virErrorNumber' info='failed to start storage'/>
|
||||
<struct name='virConnect' file='libvirt' type='struct _virConnect'/>
|
||||
<struct name='virConnectAuth' file='libvirt' type='struct _virConnectAuth'>
|
||||
@ -802,6 +844,9 @@ see note above'/>
|
||||
<info>a virSchedParameterPtr is a pointer to a virSchedParameter structure.</info>
|
||||
</typedef>
|
||||
<typedef name='virSchedParameterType' file='libvirt' type='enum'/>
|
||||
<struct name='virSecret' file='libvirt' type='struct _virSecret'/>
|
||||
<typedef name='virSecretPtr' file='libvirt' type='virSecret *'/>
|
||||
<typedef name='virSecretUsageType' file='libvirt' type='enum'/>
|
||||
<struct name='virSecurityLabel' file='libvirt' type='struct _virSecurityLabel'/>
|
||||
<typedef name='virSecurityLabelPtr' file='libvirt' type='virSecurityLabel *'>
|
||||
<info>a virSecurityLabelPtr is a pointer to a virSecurityLabel.</info>
|
||||
@ -966,6 +1011,13 @@ see note above'/>
|
||||
<arg name='names' type='char ** const' info='pointer to an array to store the names'/>
|
||||
<arg name='maxnames' type='int' info='size of the array'/>
|
||||
</function>
|
||||
<function name='virConnectListDefinedInterfaces' file='libvirt' module='libvirt'>
|
||||
<info>Collect the list of defined (inactive) physical host interfaces, and store their names in @names.</info>
|
||||
<return type='int' info='the number of interfaces found or -1 in case of error'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='names' type='char ** const' info='array to collect the list of names of interfaces'/>
|
||||
<arg name='maxnames' type='int' info='size of @names'/>
|
||||
</function>
|
||||
<function name='virConnectListDefinedNetworks' file='libvirt' module='libvirt'>
|
||||
<info>list the inactive networks, stores the pointers to the names in @names</info>
|
||||
<return type='int' info='the number of names provided in the array or -1 in case of error'/>
|
||||
@ -988,7 +1040,7 @@ see note above'/>
|
||||
<arg name='maxids' type='int' info='size of @ids'/>
|
||||
</function>
|
||||
<function name='virConnectListInterfaces' file='libvirt' module='libvirt'>
|
||||
<info>Collect the list of physical host interfaces, and store their names in @names</info>
|
||||
<info>Collect the list of active physical host interfaces, and store their names in @names</info>
|
||||
<return type='int' info='the number of interfaces found or -1 in case of error'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='names' type='char ** const' info='array to collect the list of names of interfaces'/>
|
||||
@ -1001,6 +1053,13 @@ see note above'/>
|
||||
<arg name='names' type='char ** const' info='array to collect the list of names of active networks'/>
|
||||
<arg name='maxnames' type='int' info='size of @names'/>
|
||||
</function>
|
||||
<function name='virConnectListSecrets' file='libvirt' module='libvirt'>
|
||||
<info>List UUIDs of defined secrets, store pointers to names in uuids.</info>
|
||||
<return type='int' info='the number of UUIDs provided in the array, or -1 on failure.'/>
|
||||
<arg name='conn' type='virConnectPtr' info='virConnect connection'/>
|
||||
<arg name='uuids' type='char **' info='Pointer to an array to store the UUIDs'/>
|
||||
<arg name='maxuuids' type='int' info='size of the array.'/>
|
||||
</function>
|
||||
<function name='virConnectListStoragePools' file='libvirt' module='libvirt'>
|
||||
<info>Provides the list of names of active storage pools upto maxnames. If there are more than maxnames, the remaining names will be silently ignored.</info>
|
||||
<return type='int' info='0 on success, -1 on error'/>
|
||||
@ -1013,6 +1072,11 @@ see note above'/>
|
||||
<return type='int' info='the number of domain found or -1 in case of error'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
</function>
|
||||
<function name='virConnectNumOfDefinedInterfaces' file='libvirt' module='libvirt'>
|
||||
<info>Provides the number of defined (inactive) interfaces on the physical host.</info>
|
||||
<return type='int' info='the number of defined interface found or -1 in case of error'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
</function>
|
||||
<function name='virConnectNumOfDefinedNetworks' file='libvirt' module='libvirt'>
|
||||
<info>Provides the number of inactive networks.</info>
|
||||
<return type='int' info='the number of networks found or -1 in case of error'/>
|
||||
@ -1029,8 +1093,8 @@ see note above'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
</function>
|
||||
<function name='virConnectNumOfInterfaces' file='libvirt' module='libvirt'>
|
||||
<info>Provides the number of interfaces on the physical host.</info>
|
||||
<return type='int' info='the number of interface found or -1 in case of error'/>
|
||||
<info>Provides the number of active interfaces on the physical host.</info>
|
||||
<return type='int' info='the number of active interfaces found or -1 in case of error'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
</function>
|
||||
<function name='virConnectNumOfNetworks' file='libvirt' module='libvirt'>
|
||||
@ -1038,6 +1102,11 @@ see note above'/>
|
||||
<return type='int' info='the number of network found or -1 in case of error'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
</function>
|
||||
<function name='virConnectNumOfSecrets' file='libvirt' module='libvirt'>
|
||||
<info>Fetch number of currently defined secrets.</info>
|
||||
<return type='int' info='the number currently defined secrets.'/>
|
||||
<arg name='conn' type='virConnectPtr' info='virConnect connection'/>
|
||||
</function>
|
||||
<function name='virConnectNumOfStoragePools' file='libvirt' module='libvirt'>
|
||||
<info>Provides the number of active storage pools</info>
|
||||
<return type='int' info='the number of pools found, or -1 on error'/>
|
||||
@ -1045,18 +1114,18 @@ see note above'/>
|
||||
</function>
|
||||
<function name='virConnectOpen' file='libvirt' module='libvirt'>
|
||||
<info>This function should be called first to get a connection to the Hypervisor and xen store</info>
|
||||
<return type='virConnectPtr' info='a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html'/>
|
||||
<return type='virConnectPtr' info='a pointer to the hypervisor connection or NULL in case of error If @name is NULL then probing will be done to determine a suitable default driver to activate. This involves trying each hypervisor in turn until one successfully opens. If the LIBVIRT_DEFAULT_URI environment variable is set, then it will be used in preference to probing for a driver. If connecting to an unprivileged hypervisor driver which requires the libvirtd daemon to be active, it will automatically be launched if not already running. This can be prevented by setting the environment variable LIBVIRT_AUTOSTART=0 URIs are documented at http://libvirt.org/uri.html'/>
|
||||
<arg name='name' type='const char *' info='URI of the hypervisor'/>
|
||||
</function>
|
||||
<function name='virConnectOpenAuth' file='libvirt' module='libvirt'>
|
||||
<info>This function should be called first to get a connection to the Hypervisor. If necessary, authentication will be performed fetching credentials via the callback</info>
|
||||
<info>This function should be called first to get a connection to the Hypervisor. If necessary, authentication will be performed fetching credentials via the callback See virConnectOpen for notes about environment variables which can have an effect on opening drivers</info>
|
||||
<return type='virConnectPtr' info='a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html'/>
|
||||
<arg name='name' type='const char *' info='URI of the hypervisor'/>
|
||||
<arg name='auth' type='virConnectAuthPtr' info='Authenticate callback parameters'/>
|
||||
<arg name='flags' type='int' info='Open flags'/>
|
||||
</function>
|
||||
<function name='virConnectOpenReadOnly' file='libvirt' module='libvirt'>
|
||||
<info>This function should be called first to get a restricted connection to the library functionalities. The set of APIs usable are then restricted on the available methods to control the domains.</info>
|
||||
<info>This function should be called first to get a restricted connection to the library functionalities. The set of APIs usable are then restricted on the available methods to control the domains. See virConnectOpen for notes about environment variables which can have an effect on opening drivers</info>
|
||||
<return type='virConnectPtr' info='a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html'/>
|
||||
<arg name='name' type='const char *' info='URI of the hypervisor'/>
|
||||
</function>
|
||||
@ -1484,28 +1553,28 @@ see note above'/>
|
||||
<function name='virInterfaceFree' file='libvirt' module='libvirt'>
|
||||
<info>Free the interface object. The interface itself is unaltered. The data structure is freed and should not be used thereafter.</info>
|
||||
<return type='int' info='0 in case of success and -1 in case of failure.'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='a interface object'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='an interface object'/>
|
||||
</function>
|
||||
<function name='virInterfaceGetConnect' file='libvirt' module='libvirt'>
|
||||
<info>Provides the connection pointer associated with an interface. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the interface object together.</info>
|
||||
<return type='virConnectPtr' info='the virConnectPtr or NULL in case of failure.'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='pointer to a interface'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='pointer to an interface'/>
|
||||
</function>
|
||||
<function name='virInterfaceGetMACString' file='libvirt' module='libvirt'>
|
||||
<info>Get the MAC for a interface as string. For more information about MAC see RFC4122.</info>
|
||||
<info>Get the MAC for an interface as string. For more information about MAC see RFC4122.</info>
|
||||
<return type='const char *' info='a pointer to the MAC address (in null-terminated ASCII format) or NULL, the string need not be deallocated its lifetime will be the same as the interface object.'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='a interface object'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='an interface object'/>
|
||||
</function>
|
||||
<function name='virInterfaceGetName' file='libvirt' module='libvirt'>
|
||||
<info>Get the public name for that interface</info>
|
||||
<return type='const char *' info='a pointer to the name or NULL, the string need not be deallocated its lifetime will be the same as the interface object.'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='a interface object'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='an interface object'/>
|
||||
</function>
|
||||
<function name='virInterfaceGetXMLDesc' file='libvirt' module='libvirt'>
|
||||
<info>Provide an XML description of the interface. The description may be reused later to recreate the interface with virInterfaceCreateXML().</info>
|
||||
<info>Provide an XML description of the interface. The description may be reused later to redefine the interface with virInterfaceDefineXML().</info>
|
||||
<return type='char *' info='a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='a interface object'/>
|
||||
<arg name='flags' type='unsigned int' info='and OR'ed set of extraction flags, not used yet'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='an interface object'/>
|
||||
<arg name='flags' type='unsigned int' info='an OR'ed set of extraction flags, not used yet'/>
|
||||
</function>
|
||||
<function name='virInterfaceLookupByMACString' file='libvirt' module='libvirt'>
|
||||
<info>Try to lookup an interface on the given hypervisor based on its MAC.</info>
|
||||
@ -1520,7 +1589,7 @@ see note above'/>
|
||||
<arg name='name' type='const char *' info='name for the interface'/>
|
||||
</function>
|
||||
<function name='virInterfaceRef' file='libvirt' module='libvirt'>
|
||||
<info>Increment the reference count on the interface. For each additional call to this method, there shall be a corresponding call to virInterfaceFree to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a interface would increment the reference count.</info>
|
||||
<info>Increment the reference count on the interface. For each additional call to this method, there shall be a corresponding call to virInterfaceFree to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using an interface would increment the reference count.</info>
|
||||
<return type='int' info='0 in case of success, -1 in case of failure.'/>
|
||||
<arg name='iface' type='virInterfacePtr' info='the interface to hold a reference on'/>
|
||||
</function>
|
||||
@ -1593,7 +1662,7 @@ see note above'/>
|
||||
<info>Provide an XML description of the network. The description may be reused later to relaunch the network with virNetworkCreateXML().</info>
|
||||
<return type='char *' info='a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.'/>
|
||||
<arg name='network' type='virNetworkPtr' info='a network object'/>
|
||||
<arg name='flags' type='int' info='and OR'ed set of extraction flags, not used yet'/>
|
||||
<arg name='flags' type='int' info='an OR'ed set of extraction flags, not used yet'/>
|
||||
</function>
|
||||
<function name='virNetworkLookupByName' file='libvirt' module='libvirt'>
|
||||
<info>Try to lookup a network on the given hypervisor based on its name.</info>
|
||||
@ -1701,7 +1770,7 @@ see note above'/>
|
||||
<arg name='dev' type='virNodeDevicePtr' info='pointer to the node device'/>
|
||||
</function>
|
||||
<function name='virNodeGetCellsFreeMemory' file='libvirt' module='libvirt'>
|
||||
<info>This call returns the amount of free memory in one or more NUMA cells. The @freeMems array must be allocated by the caller and will be filled with the amount of free memory in kilobytes for each cell requested, starting with startCell (in freeMems[0]), up to either (startCell + maxCells), or the number of additional cells in the node, whichever is smaller.</info>
|
||||
<info>This call returns the amount of free memory in one or more NUMA cells. The @freeMems array must be allocated by the caller and will be filled with the amount of free memory in bytes for each cell requested, starting with startCell (in freeMems[0]), up to either (startCell + maxCells), or the number of additional cells in the node, whichever is smaller.</info>
|
||||
<return type='int' info='the number of entries filled in freeMems, or -1 in case of error.'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='freeMems' type='unsigned long long *' info='pointer to the array of unsigned long long'/>
|
||||
@ -1754,6 +1823,95 @@ see note above'/>
|
||||
<info>Save the last error into a new error object.</info>
|
||||
<return type='virErrorPtr' info='a pointer to the copied error or NULL if allocation failed. It is the caller's responsibility to free the error with virFreeError().'/>
|
||||
</function>
|
||||
<function name='virSecretDefineXML' file='libvirt' module='libvirt'>
|
||||
<info>If XML specifies an UUID, locates the specified secret and replaces all attributes of the secret specified by UUID by attributes specified in xml (any attributes not specified in xml are discarded). Otherwise, creates a new secret with an automatically chosen UUID, and initializes its attributes from xml.</info>
|
||||
<return type='virSecretPtr' info='a the secret on success, NULL on failure.'/>
|
||||
<arg name='conn' type='virConnectPtr' info='virConnect connection'/>
|
||||
<arg name='xml' type='const char *' info='XML describing the secret.'/>
|
||||
<arg name='flags' type='unsigned int' info='flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virSecretFree' file='libvirt' module='libvirt'>
|
||||
<info>Release the secret handle. The underlying secret continues to exist.</info>
|
||||
<return type='int' info='0 on success, or -1 on error'/>
|
||||
<arg name='secret' type='virSecretPtr' info='pointer to a secret'/>
|
||||
</function>
|
||||
<function name='virSecretGetConnect' file='libvirt' module='libvirt'>
|
||||
<info>Provides the connection pointer associated with a secret. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the secret object together.</info>
|
||||
<return type='virConnectPtr' info='the virConnectPtr or NULL in case of failure.'/>
|
||||
<arg name='secret' type='virSecretPtr' info='A virSecret secret'/>
|
||||
</function>
|
||||
<function name='virSecretGetUUID' file='libvirt' module='libvirt'>
|
||||
<info>Fetches the UUID of the secret.</info>
|
||||
<return type='int' info='0 on success with the uuid buffer being filled, or -1 upon failure.'/>
|
||||
<arg name='secret' type='virSecretPtr' info='A virSecret secret'/>
|
||||
<arg name='uuid' type='unsigned char *' info='buffer of VIR_UUID_BUFLEN bytes in size'/>
|
||||
</function>
|
||||
<function name='virSecretGetUUIDString' file='libvirt' module='libvirt'>
|
||||
<info>Get the UUID for a secret as string. For more information about UUID see RFC4122.</info>
|
||||
<return type='int' info='-1 in case of error, 0 in case of success'/>
|
||||
<arg name='secret' type='virSecretPtr' info='a secret object'/>
|
||||
<arg name='buf' type='char *' info='pointer to a VIR_UUID_STRING_BUFLEN bytes array'/>
|
||||
</function>
|
||||
<function name='virSecretGetUsageID' file='libvirt' module='libvirt'>
|
||||
<info>Get the unique identifier of the object with which this secret is to be used. The format of the identifier is dependant on the usage type of the secret. For a secret with a usage type of VIR_SECRET_USAGE_TYPE_VOLUME the identifier will be a fully qualfied path name. The identifiers are intended to be unique within the set of all secrets sharing the same usage type. ie, there shall only ever be one secret for each volume path.</info>
|
||||
<return type='const char *' info='a string identifying the object using the secret, or NULL upon error'/>
|
||||
<arg name='secret' type='virSecretPtr' info='a secret object'/>
|
||||
</function>
|
||||
<function name='virSecretGetUsageType' file='libvirt' module='libvirt'>
|
||||
<info>Get the type of object which uses this secret. The returned value is one of the constants defined in the virSecretUsageType enumeration. More values may be added to this enumeration in the future, so callers should expect to see usage types they do not explicitly know about.</info>
|
||||
<return type='int' info='a positive integer identifying the type of object, or -1 upon error.'/>
|
||||
<arg name='secret' type='virSecretPtr' info='a secret object'/>
|
||||
</function>
|
||||
<function name='virSecretGetValue' file='libvirt' module='libvirt'>
|
||||
<info>Fetches the value of a secret.</info>
|
||||
<return type='unsigned char *' info='the secret value on success, NULL on failure. The caller must free() the secret value.'/>
|
||||
<arg name='secret' type='virSecretPtr' info='A virSecret connection'/>
|
||||
<arg name='value_size' type='size_t *' info='Place for storing size of the secret value'/>
|
||||
<arg name='flags' type='unsigned int' info='flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virSecretGetXMLDesc' file='libvirt' module='libvirt'>
|
||||
<info>Fetches an XML document describing attributes of the secret.</info>
|
||||
<return type='char *' info='the XML document on success, NULL on failure. The caller must free() the XML.'/>
|
||||
<arg name='secret' type='virSecretPtr' info='A virSecret secret'/>
|
||||
<arg name='flags' type='unsigned int' info='flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virSecretLookupByUUID' file='libvirt' module='libvirt'>
|
||||
<info>Try to lookup a secret on the given hypervisor based on its UUID. Uses the 16 bytes of raw data to describe the UUID</info>
|
||||
<return type='virSecretPtr' info='a new secret object or NULL in case of failure. If the secret cannot be found, then VIR_ERR_NO_SECRET error is raised.'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='uuid' type='const unsigned char *' info='the raw UUID for the secret'/>
|
||||
</function>
|
||||
<function name='virSecretLookupByUUIDString' file='libvirt' module='libvirt'>
|
||||
<info>Try to lookup a secret on the given hypervisor based on its UUID. Uses the printable string value to describe the UUID</info>
|
||||
<return type='virSecretPtr' info='a new secret object or NULL in case of failure. If the secret cannot be found, then VIR_ERR_NO_SECRET error is raised.'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='uuidstr' type='const char *' info='the string UUID for the secret'/>
|
||||
</function>
|
||||
<function name='virSecretLookupByUsage' file='libvirt' module='libvirt'>
|
||||
<info>Try to lookup a secret on the given hypervisor based on its usage The usageID is unique within the set of secrets sharing the same usageType value.</info>
|
||||
<return type='virSecretPtr' info='a new secret object or NULL in case of failure. If the secret cannot be found, then VIR_ERR_NO_SECRET error is raised.'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='usageType' type='int' info='the type of secret usage'/>
|
||||
<arg name='usageID' type='const char *' info='identifier of the object using the secret'/>
|
||||
</function>
|
||||
<function name='virSecretRef' file='libvirt' module='libvirt'>
|
||||
<info>Increment the reference count on the secret. For each additional call to this method, there shall be a corresponding call to virSecretFree to release the reference count, once the caller no longer needs the reference to this object. This method is typically useful for applications where multiple threads are using a connection, and it is required that the connection remain open until all threads have finished using it. ie, each new thread using a secret would increment the reference count.</info>
|
||||
<return type='int' info='0 in case of success, -1 in case of failure.'/>
|
||||
<arg name='secret' type='virSecretPtr' info='the secret to hold a reference on'/>
|
||||
</function>
|
||||
<function name='virSecretSetValue' file='libvirt' module='libvirt'>
|
||||
<info>Sets the value of a secret.</info>
|
||||
<return type='int' info='0 on success, -1 on failure.'/>
|
||||
<arg name='secret' type='virSecretPtr' info='A virSecret secret'/>
|
||||
<arg name='value' type='const unsigned char *' info='Value of the secret'/>
|
||||
<arg name='value_size' type='size_t' info='Size of the value'/>
|
||||
<arg name='flags' type='unsigned int' info='flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virSecretUndefine' file='libvirt' module='libvirt'>
|
||||
<info>Deletes the specified secret. This does not free the associated virSecretPtr object.</info>
|
||||
<return type='int' info='0 on success, -1 on failure.'/>
|
||||
<arg name='secret' type='virSecretPtr' info='A virSecret secret'/>
|
||||
</function>
|
||||
<function name='virSetErrorFunc' file='virterror' module='virterror'>
|
||||
<info>Set a library global error handling function, if @handler is NULL, it will reset to default printing on stderr. The error raised there are those for which no handler at the connection level could caught.</info>
|
||||
<return type='void'/>
|
||||
@ -1896,7 +2054,7 @@ see note above'/>
|
||||
</function>
|
||||
<function name='virStoragePoolUndefine' file='libvirt' module='libvirt'>
|
||||
<info>Undefine an inactive storage pool</info>
|
||||
<return type='int' info='a virStoragePoolPtr object, or NULL if creation failed'/>
|
||||
<return type='int' info='0 on success, -1 on failure'/>
|
||||
<arg name='pool' type='virStoragePoolPtr' info='pointer to storage pool'/>
|
||||
</function>
|
||||
<function name='virStorageVolCreateXML' file='libvirt' module='libvirt'>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -147,24 +147,42 @@
|
||||
<ul><li>LIBVIRT_DEBUG: it can take the four following values:
|
||||
<ul><li>1 or "debug": asking the library to log every message emitted,
|
||||
though the filters can be used to avoid filling up the output</li><li>2 or "info": log all non-debugging informations</li><li>3 or "warn": log warnings and errors, that's the default value</li><li>4 or "error": log only error messages</li></ul></li><li>LIBVIRT_LOG_FILTERS: allow to define logging filters</li><li>LIBVIRT_LOG_OUTPUTS: allow to define logging outputs</li></ul>
|
||||
<p>Note that, for example, setting LIBVIRT_DEBUG= is the same as unset. If
|
||||
you specify an invalid value, it will be ignored with a warning. If you
|
||||
have an error in a filter or output string, some of the settings may be
|
||||
applied up to the point at which libvirt encountered the error.</p>
|
||||
<p>Similary the daemon logging behaviour can be tuned using 3 config
|
||||
variables, stored in the configuration file:
|
||||
</p>
|
||||
<ul><li>log_level: accepts the following values:
|
||||
<ul><li>4: only errors</li><li>3: warnings and errors</li><li>2: informations, warnings and errors</li><li>1: debug and everything</li></ul></li><li>log_filters: allow to define logging filters</li><li>log_outputs: allow to define logging outputs</li></ul>
|
||||
<p>In both case the syntax for filters and outputs is similar.</p>
|
||||
<p>When starting the libvirt daemon, any logging environment variable
|
||||
settings will override settings in the config file. Command line options
|
||||
take precedence over all. If no outputs are defined for libvirtd, it
|
||||
defaults to logging to syslog when it is running as a daemon, or to
|
||||
stderr when it is running in the foreground.</p>
|
||||
<p>Libvirtd does not reload its logging configuration when issued a SIGHUP.
|
||||
If you want to reload the configuration, you must do a <code>service
|
||||
libvirtd restart</code> or manually stop and restart the daemon
|
||||
yourself.</p>
|
||||
<p>The syntax for filters and outputs is the same for both types of
|
||||
variables.</p>
|
||||
<p>The format for a filter is:</p>
|
||||
<pre>x:name</pre>
|
||||
<p>where <code>name</code> is a match string e.g. <code>remote</code> or
|
||||
<code>qemu</code> and the x is the minimal level where matching messages
|
||||
should be logged:</p>
|
||||
<ul><li>1: DEBUG</li><li>2: INFO</li><li>3: WARNING</li><li>4: ERROR</li></ul>
|
||||
<p>Multiple filter can be defined in a single string, they just need to be
|
||||
<p>Multiple filters can be defined in a single string, they just need to be
|
||||
separated by spaces, e.g: <code>"3:remote 4:event"</code> to only get
|
||||
warning or errors from the remote layer and only errors from the event
|
||||
layer.</p>
|
||||
<p>
|
||||
</p>
|
||||
<p>If you specify a log priority in a filter that is below the default log
|
||||
priority level, messages that match that filter will still be logged,
|
||||
while others will not. In order to see those messages, you must also have
|
||||
an output defined that includes the priority level of your filter.</p>
|
||||
<p>The format for an output can be one of those 3 forms:</p>
|
||||
<ul><li><code>x:stderr</code> output goes to stderr</li><li><code>x:syslog:name</code> use syslog for the output and use the
|
||||
given <code>name</code> as the ident</li><li><code>x:file:file_path</code>output to a file, with the given
|
||||
|
@ -44,6 +44,10 @@
|
||||
<li>LIBVIRT_LOG_FILTERS: allow to define logging filters</li>
|
||||
<li>LIBVIRT_LOG_OUTPUTS: allow to define logging outputs</li>
|
||||
</ul>
|
||||
<p>Note that, for example, setting LIBVIRT_DEBUG= is the same as unset. If
|
||||
you specify an invalid value, it will be ignored with a warning. If you
|
||||
have an error in a filter or output string, some of the settings may be
|
||||
applied up to the point at which libvirt encountered the error.</p>
|
||||
<p>Similary the daemon logging behaviour can be tuned using 3 config
|
||||
variables, stored in the configuration file:
|
||||
<ul>
|
||||
@ -57,7 +61,17 @@
|
||||
<li>log_filters: allow to define logging filters</li>
|
||||
<li>log_outputs: allow to define logging outputs</li>
|
||||
</ul>
|
||||
<p>In both case the syntax for filters and outputs is similar.</p>
|
||||
<p>When starting the libvirt daemon, any logging environment variable
|
||||
settings will override settings in the config file. Command line options
|
||||
take precedence over all. If no outputs are defined for libvirtd, it
|
||||
defaults to logging to syslog when it is running as a daemon, or to
|
||||
stderr when it is running in the foreground.</p>
|
||||
<p>Libvirtd does not reload its logging configuration when issued a SIGHUP.
|
||||
If you want to reload the configuration, you must do a <code>service
|
||||
libvirtd restart</code> or manually stop and restart the daemon
|
||||
yourself.</p>
|
||||
<p>The syntax for filters and outputs is the same for both types of
|
||||
variables.</p>
|
||||
<p>The format for a filter is:</p>
|
||||
<pre>x:name</pre>
|
||||
<p>where <code>name</code> is a match string e.g. <code>remote</code> or
|
||||
@ -69,10 +83,14 @@
|
||||
<li>3: WARNING</li>
|
||||
<li>4: ERROR</li>
|
||||
</ul>
|
||||
<p>Multiple filter can be defined in a single string, they just need to be
|
||||
<p>Multiple filters can be defined in a single string, they just need to be
|
||||
separated by spaces, e.g: <code>"3:remote 4:event"</code> to only get
|
||||
warning or errors from the remote layer and only errors from the event
|
||||
layer.<p>
|
||||
<p>If you specify a log priority in a filter that is below the default log
|
||||
priority level, messages that match that filter will still be logged,
|
||||
while others will not. In order to see those messages, you must also have
|
||||
an output defined that includes the priority level of your filter.</p>
|
||||
<p>The format for an output can be one of those 3 forms:</p>
|
||||
<ul>
|
||||
<li><code>x:stderr</code> output goes to stderr</li>
|
||||
|
472
docs/news.html
472
docs/news.html
@ -76,6 +76,476 @@
|
||||
<p>Here is the list of official releases, however since it is early on in the
|
||||
development of libvirt, it is preferable when possible to just use the <a href="downloads.html">CVS version or snapshot</a>, contact the mailing list
|
||||
and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
<h3>0.7.1: Sep 15 2009</h3>
|
||||
<ul><li>New features:
|
||||
Add support for encrypted (qcow) volume creation. (Miloslav Trmač),
|
||||
Secret manipulation public API (Miloslav Trmač),
|
||||
Multipath storage support module (Dave Allan),
|
||||
VBox add Storage Volume support (Pritesh Kothari),
|
||||
Support configuration of huge pages in guests (Daniel P. Berrange),
|
||||
Support new PolicyKit 1.0 API (Daniel P. Berrange),
|
||||
Compressed save image format for Qemu (Chris Lalancette, Charles Duffy
|
||||
and Jim Meyering),
|
||||
QEmu add host PCI device hotplug support (Mark McLoughlin)
|
||||
</li><li>Documentation:
|
||||
Minor comment changes (Laine Stump),
|
||||
Fix up virNodeGetCellsFreeMemory (Chris Lalancette),
|
||||
Fix some typos and remove unhelpful acronyms in QEMU docs (Daniel P. Berrange),
|
||||
Add documentation about the QEMU driver security features (Daniel P. Berrange),
|
||||
Remove 'the-the' typo in docs (Daniel P. Berrange),
|
||||
Fix some URLs in virsh manpage (Mark McLoughlin),
|
||||
Add link to AbiCloud web management system (Daniel P. Berrange),
|
||||
Update logging documentation (Amy Griffis)
|
||||
</li><li>Portability:
|
||||
Fix win32 platform build (Daniel P. Berrange)
|
||||
</li><li>Bug fixes:
|
||||
VBox bug when starting machine from old versions (Pritesh Kothari),
|
||||
ESX avoid potential leaks (Matthias Bolte),
|
||||
Fix more OOM handling bugs (Daniel P. Berrange),
|
||||
Fix logging buffer overrun read (Daniel P. Berrange),
|
||||
Fix misc thread locking bugs / bogus warnings (Daniel P. Berrange),
|
||||
Fix regression from "Avoid polling on FDs with no events" (Chris Lalancette),
|
||||
Close logfile fd after spawning qemu (Ryota Ozaki),
|
||||
Check for libssh2 >= 1.0 for phy driver (Maximilian Wilhelm),
|
||||
Avoid another leak in src/xend_internal.c (Matthias Bolte),
|
||||
Avoid a leak in xenDaemonLookupByID (Matthias Bolte),
|
||||
VBox fix minor bugs in display and added OOM checks (Pritesh Kothari),
|
||||
Some close/fclose/closedir calls are missing (Matthias Bolte),
|
||||
lxc_container.c: avoid a leak on error paths (Jim Meyering),
|
||||
Fix several memory leaks (Ryota Ozaki),
|
||||
Fix a memory leak in virsh (Laine Stump),
|
||||
Fix ID field in virDomainPtr after starting Xen VM (Daniel P. Berrange),
|
||||
Fix memory leak of monitor character device (Daniel P. Berrange),
|
||||
Automatically set correct ownership of QEMU state directories (Daniel P. Berrange),
|
||||
Avoid polling on FDs with no events enabled (Daniel P. Berrange),
|
||||
esx_vi: return -1 upon failure, as intended (Matthias Bolte),
|
||||
python: let libvirt_virConnectDomainEventCallback indicate success (Jim Meyering),
|
||||
uml_conf.c: don't return an uninitialized pointer (Jim Meyering),
|
||||
storage_backend.c: assure clang that inputvol can't be NULL (Jim Meyering),
|
||||
libvir.c: avoid NULL dereference in virStoragePoolSetAutostart (Jim Meyering),
|
||||
lxc: avoid NULL dereference upon getmntent failure (Jim Meyering),
|
||||
storage_backend_fs: avoid NULL dereference on opendir failure (Jim Meyering),
|
||||
Fix bugs in virDomainMigrate v2 code. (Chris Lalancette),
|
||||
VMware ESX: Don't warn on some query parameter (Matthias Bolte),
|
||||
Don't blindly reorder disk drives (Daniel P. Berrange),
|
||||
Fix sexpr2string() to handle empty list. (Jim Fehlig),
|
||||
Fix driver entry table for UML numa APIs (Daniel P. Berrange),
|
||||
Fix crash in virsh vol-key command (Pritesh Kothari),
|
||||
517157 fix selinux problem with images on NFS (Darryl L. Pierce),
|
||||
Fix phypOpen() escape_specialcharacters (Mattias Bolte),
|
||||
Power Hypervisor: fix potential segfault (Mattias Bolte),
|
||||
Fix bridge/tap system error reporting (Mark McLoughlin),
|
||||
Reset PCI host devices after hot-unplug (Mark McLoughlin),
|
||||
Reset unmanaged PCI host devices before hotplug (Mark McLoughlin),
|
||||
Fix up connection reference counting. (Chris Lalancette),
|
||||
Fix LXC driver crash when kernel doesn't support clone (Daniel P. Berrange),
|
||||
Make LXC / UML drivers robust against NUMA topology brokenness (Daniel P. Berrange),
|
||||
Run 'cont' on successful migration finish. (Chris Lalancette),
|
||||
Fix QEMU domain status after restore. (Chris Lalancette),
|
||||
Handle kernels with no ipv6 support (Mark McLoughlin),
|
||||
Set perms on /var/lib/libvirt/boot to 0711 (Mark McLoughlin),
|
||||
chown kernel/initrd before spawning qemu (Mark McLoughlin),
|
||||
Several fixes to libvirtd's log setup (Amy Griffis),
|
||||
Fix memleak if esxOpen fails (Matthias Bolte)
|
||||
</li><li>Improvement:
|
||||
support lzop save compression for qemu (Charles Duffy),
|
||||
VBox 3.0.6 API change support (Pritesh Kothari),
|
||||
Add UUID definition required by storage encryption import (Daniel P. Berrange),
|
||||
Make secrets RNG more strict (Daniel P. Berrange),
|
||||
Fill in secret UUID for qcow encryption (Daniel P. Berrange),
|
||||
Add usage type/id as a public API property of virSecret (Daniel P. Berrange),
|
||||
Fix UUID handling in secrets/storage encryption APIs (Daniel P. Berrange),
|
||||
Save vcpuinfo in status file (Daniel P. Berrange),
|
||||
Restart libvirtd upon RPM upgrade (Daniel P. Berrange),
|
||||
Add support for qcow encrypted volumes to qemu. (Miloslav Trmač),
|
||||
Provide missing passphrase when creating a volume. (Miloslav Trmač),
|
||||
Add virsh commands for secrets APIs (Miloslav Trmač),
|
||||
Local file implementation of secret driver API (Miloslav Trmač),
|
||||
Mask out flags used internally for virSecretGetValue (Miloslav Trmač),
|
||||
Add <usage> to <secret> docs (Miloslav Trmač),
|
||||
also allow use of XZ for Qemu image compression (Jim Meyering),
|
||||
Support relabelling of USB and PCI devices (Daniel P. Berrange),
|
||||
Add helper APIs for iterating over PCI device resource files (Daniel P. Berrange),
|
||||
Add helper module for dealing with USB host devices (Daniel P. Berrange),
|
||||
Test that domain-specific qemu machine types are used correctly (Mark McLoughlin),
|
||||
Probe machine types from kvm binary too (Mark McLoughlin),
|
||||
Look up machine types from all domains in qemudGetOldMachines() (Mark McLoughlin),
|
||||
Test qemu machine aliases (Mark McLoughlin),
|
||||
Add qemu -help test data for qemu-kvm-0.11.0-rc2 (Mark McLoughlin),
|
||||
Add a more featureful qemu capabilities test data (Mark McLoughlin),
|
||||
Add arm arch to capabilities schema (Mark McLoughlin),
|
||||
Update capabilities schema to allow multiple machines per domain (Mark McLoughlin),
|
||||
Add esx and tcp migration uri transports to capabilities schema (Mark McLoughlin),
|
||||
Reintroduce support for lzop compression (Charles Duffy),
|
||||
build: update gnulib submodule to latest (Jim Meyering),
|
||||
Add flags and requires for Multipath storage (Daniel Veillard),
|
||||
ESX raise error if UUID parse failed (Matthias Bolte),
|
||||
ESX add domain undefine based on esxVI_UnregisterVM (Matthias Bolte),
|
||||
ESX add esxGetCapabilities() with basic defaults (Matthias Bolte),
|
||||
Switch Power Hypervisor to libssh2 (Eduardo Otubo),
|
||||
Allow libvirtd to RPC to external libvirtd (Chris Lalancette),
|
||||
Add support for setting disk drive serial numbers (Daniel P. Berrange),
|
||||
VBox support for defining/dumping video devices (Pritesh Kothari),
|
||||
Generic parsing support for video acceleration (Pritesh Kothari),
|
||||
VMware ESX: Allow ethernet address type 'vpx' (Matthias Bolte),
|
||||
Support for getting/setting number of cpus in VBox (Pritesh Kothari),
|
||||
Make handling of monitor prompts more general. (Miloslav Trmač),
|
||||
Attach encryption information to virDomainDiskDef. (Miloslav Trmač),
|
||||
Recognize encryption format of qcow volumes. (Miloslav Trmač),
|
||||
Attach encryption information to virStorageVolDef. (Miloslav Trmač),
|
||||
Add volume encryption information handling. (Miloslav Trmač),
|
||||
Secret manipulation API docs refresh and wire up python generator (Miloslav Trmač),
|
||||
Secret manipulation remote client (Miloslav Trmač),
|
||||
Secret manipulation libvirtd wire protocol and remote dispatcher (Miloslav Trmač),
|
||||
Secret manipulation public API implementation (Miloslav Trmač),
|
||||
Secret manipulation internal API (Miloslav Trmač),
|
||||
Add test for recently fixed crash with latest XenD (Daniel P. Berrange),
|
||||
Don't expose 'vnet%d' to the user (Mark McLoughlin),
|
||||
Maintain a list of active PCI hostdevs and use it in pciResetDevice() (Mark McLoughlin),
|
||||
Simplify PCI hostdev prepare/re-attach using a pciDeviceList type (Mark McLoughlin),
|
||||
Use pci_addr=auto with QEMU's pci_add monitor command (Mark McLoughlin),
|
||||
Check active domain hostdevs before allowing PCI reset (Mark McLoughlin),
|
||||
Allow pciResetDevice() to reset multiple devices (Mark McLoughlin),
|
||||
Improve PCI host device reset error message (Mark McLoughlin),
|
||||
Reset and re-attach PCI host devices on guest shutdown (Mark McLoughlin),
|
||||
Allow PM reset on multi-function PCI devices (Mark McLoughlin),
|
||||
Detect KVM's PCI device assignment support (Mark McLoughlin),
|
||||
Split virDomainMigrate into functions. (Chris Lalancette),
|
||||
Consolidate code for parsing the logging env (Amy Griffis)
|
||||
</li><li>Cleanups:
|
||||
Remove accidentally added UUID re-definition in storage schema (Daniel P. Berrange),
|
||||
ESX cleanup of CPU model strings (Matthias Bolte),
|
||||
Fix use of dlopen modules (Daniel P. Berrange),
|
||||
Consolidate "cont" into qemudMonitorSendCont() (Miloslav Trmač),
|
||||
Cleanup sec driver error reporting to use virReportSystemError (Daniel P. Berrange),
|
||||
Port QEMU driver to use USB/PCI device helpers (Daniel P. Berrange),
|
||||
Simplify and fix qemudCanonicalizeMachine() (Mark McLoughlin),
|
||||
Split up qemudGetOldMachines() (Mark McLoughlin),
|
||||
Re-factor qemu test machine allocation code (Mark McLoughlin),
|
||||
Canonicalize the qemu machine type in qemuxml2argvtest (Mark McLoughlin),
|
||||
Dump qemu driver capabilities if test debugging enabled (Mark McLoughlin),
|
||||
Fix formatting of machine types in capabilities XML (Mark McLoughlin),
|
||||
qemu_driver.c: factor out more duplication (Jim Meyering),
|
||||
Deprecate lzma and lzop in favor of xz, add dep (Daniel Veillard),
|
||||
qemu_driver.c: factor out duplication in compression-type handling (Jim Meyering),
|
||||
openvz_conf.c: remove dead store to "p"; use strchrnul (Jim Meyering),
|
||||
Remove some tabs used for indent (Daniel Veillard),
|
||||
Updated a number of localizations and regenerated (Daniel Veillard),
|
||||
Add a missing comment (Miloslav Trmač),
|
||||
Fix a pasto in storage_encryption_conf.c (Miloslav Trmač),
|
||||
xm_internal.c: remove four useless comparisons after strchr (Jim Meyering),
|
||||
xm_internal.c: remove dead increment of "data" (Jim Meyering),
|
||||
network_driver.c: remove dead store to "err" (Jim Meyering),
|
||||
iptables.c: remove dead store to "s" (Jim Meyering),
|
||||
util.c: avoid dead store to "flag" (Jim Meyering),
|
||||
domain_conf.c: remove two dead stores (Jim Meyering),
|
||||
xm_internal.c: remove two ret=... dead stores (Jim Meyering),
|
||||
xm_internal.c: remove dead stores of local, "type" (Jim Meyering),
|
||||
network_conf.c: remove dead store to "err" (Jim Meyering),
|
||||
openvz_driver.c: avoid dead store to "err" (Jim Meyering),
|
||||
xend_internal.c: Remove two dead stores to "ret" (Jim Meyering),
|
||||
storage_driver.c: remove two dead stores to "backend" (Jim Meyering),
|
||||
qemu_conf.c: add a comment suggesting why we leave a dead-store (Jim Meyering),
|
||||
hash.c: remove a dead store (Jim Meyering),
|
||||
interface_conf.c: remove a dead-store and declaration (Jim Meyering),
|
||||
eventtest.c: detect write failure and avoid dead stores (Jim Meyering),
|
||||
openvz_conf.c: Remove dead store to copy_fd (Jim Meyering),
|
||||
storage_backend_logical.c: appease clang: remove useless increment (Jim Meyering),
|
||||
ESX simplify SOAP request and response handling (Matthias Bolte),
|
||||
ESX use virXPathNode*() to simplify XPath handling (Matthias Bolte),
|
||||
ESX: make esxVI_GetVirtualMachineIdentity() robust (Matthias Bolte),
|
||||
ESX: Fix VMX path parsing and URL encoding (Matthias Bolte),
|
||||
VBox driver cleanups (Pritesh Kothari),
|
||||
PHYP driver cleanups (Daniel Veillard),
|
||||
Move QEMU monitor socket in /var/lib/libvirt/qemu (Daniel P. Berrange),
|
||||
xen_internal.c: remove two unused local variables (Jim Meyering),
|
||||
mdns.c: remove dead initialization (Jim Meyering),
|
||||
node_device_conf.c: remove dead initialization (Jim Meyering),
|
||||
openvz_conf.c: don't use undefined local, "net" (Jim Meyering),
|
||||
test.c: don't use undefined local, "def" (Jim Meyering),
|
||||
remote_internal.c: appease clang (Jim Meyering),
|
||||
infra: define ATTRIBUTE_NONNULL to mark non-NULL parameters (Jim Meyering),
|
||||
lxc: don't unlink(NULL) in main (Jim Meyering),
|
||||
storage_conf.c: avoid overflow upon use of "z" or "Z" (zebi) suffix (Jim Meyering),
|
||||
VBox cleanup and update of networking shutdown (Pritesh Kothari),
|
||||
Box cleanup and update of networking XML functions (Pritesh Kothari),
|
||||
Fix misc OOM bugs (Daniel P. Berrange),
|
||||
Misc fixes to secrets API code (Daniel P. Berrange),
|
||||
Only add glusterfs dep for Fedora >= 11 (Daniel P. Berrange),
|
||||
Remove redundant base64 include file (Daniel P. Berrange),
|
||||
Don't assume buffered output echoes the command. (Miloslav Trmač),
|
||||
Update chinese, polish and spanish localizations (Daniel Veillard),
|
||||
OpenVZ: accept NULL as type for GetMaxVCPUs. (Chris Lalancette),
|
||||
Remove use of strncpy in qemudExtractMonitorPath. (Chris Lalancette),
|
||||
Refactor policycode auth code to avoid compiler warnings (Daniel P. Berrange),
|
||||
spec file: add URL to Source tag (Mark McLoughlin),
|
||||
Small fixes for qemu save compression. (Chris Lalancette),
|
||||
Fix thinko in PCI hostdev detach (Mark McLoughlin),
|
||||
Revert changes to allow pciResetDevice() reset multiple devices (Mark McLoughlin),
|
||||
Fix list updating after disk/network/hostdev hot-unplug (Mark McLoughlin),
|
||||
Re-name remote_internal.c:driver to remote_driver (Mark McLoughlin),
|
||||
Cosmetic change to 'virsh nodedev-list --tree' output (Mark McLoughlin),
|
||||
Re-factor hostdev hotplug (Mark McLoughlin),
|
||||
Remove a duplicated assignment in Xen PCI parsing. (Chris Lalancette),
|
||||
Fix up a few minor indentation issues. (Chris Lalancette),
|
||||
Fix phyp escape_specialcharacters. (Chris Lalancette),
|
||||
Make openvzGetVPSUUID take a len. (Chris Lalancette),
|
||||
Minor cleanup of error path for c_oneVmInfo. (Chris Lalancette),
|
||||
Fix up a whitespace in comments in src/console.c (Chris Lalancette),
|
||||
Fix up a stray whitespace in virHashGrow. (Chris Lalancette),
|
||||
Remove unsafe strncpy from esx_vmx.c (Chris Lalancette),
|
||||
Cleanup VIR_LOG_DEBUG parsing in eventtest (Amy Griffis),
|
||||
Tighten libvirt's parsing of logging env (Amy Griffis),
|
||||
Cleanup structure name naming (Matthias Bolte),
|
||||
Add proper OOM reporting for esxDomainGetOSType (Matthias Bolte)
|
||||
</li></ul>
|
||||
<h3>0.7.0: Aug 5 2009</h3>
|
||||
<ul><li>New features: Interface implementation based on netcf (Laine Stump,
|
||||
Daniel Veillard), Add new net filesystem glusterfs (Harshavardhana),
|
||||
Initial VMWare ESX driver (Matthias Bolte), Add support for VBox
|
||||
3 and event callbacks on vbox (Pritesh Kothari), First version
|
||||
of the Power Hypervisor driver (Eduardo Otubo), Run QEMU guests
|
||||
as an unprivileged user (Daniel P. Berrange), Support cgroups
|
||||
in QEMU driver (Daniel P. Berrange), QEmu hotplug NIC support
|
||||
(Mark McLoughlin), Storage cloning for LVM and Disk backends(Cole
|
||||
Robinson), Switching to GIT (Jim Meyering)</li><li>Documentation: Typo and comment fixes (Aron Griffis),
|
||||
Fix virCapabilitiesDefaultGuestMachine documentation. (Chris
|
||||
Lalancette), ESX Scheduler documentation and cleanup (Matthias
|
||||
Bolte), Update the java bindings page (Bryan Kearney), Added
|
||||
Matthias Bolte to AUTHORS list (Daniel Veillard), doc: clone+build
|
||||
instructions (Jim Meyering), docs: say that the old repository
|
||||
is deprecated... (Jim Meyering), document tcp listen and raw
|
||||
wire option (Guido G<>nther), Fix docs and code disagreements
|
||||
for character devices. (Cole Robinson), Fix documentation of
|
||||
virStoragePoolUndefine return (Thomas Treutner), Fix gitweb link on
|
||||
download page. (Cole Robinson), update download informations after
|
||||
switch to git (Daniel Veillard), Update links to bugzilla (Garry
|
||||
Dolley), Update the links for RHEL libvirt bugzillas (Garry Dolley)</li><li>Portability: Xen Inotify support needs sys/inotify.h
|
||||
(Maximilian Wilhelm), Workaround for broken GCC in Debian Etch
|
||||
(Maximilian Wilhelm), LXC driver requires sched.h and unshare()
|
||||
(Maximilian Wilhelm), Configure UML support only if sys/inotify.h
|
||||
present (Maximilian Wilhelm), Fix libcurl automatic check and ESX
|
||||
status (Maximilian Wilhelm), Enable ESX driver build on Mingw32
|
||||
(Daniel P. Berrange), Fix build on mingw32 by disabling netcf
|
||||
(Daniel P. Berrange), Reduce glusterfs dependency to 2.0.1
|
||||
(Mark McLoughlin), Desactivate phyp build and indicate libssh
|
||||
builreq (Daniel Veillard), Fix misc Win32 compile warnings
|
||||
(Daniel P. Berrange), Rename variable for compilation in Mingw32
|
||||
(end) (Laine Stump), Rename variable for compilation in Mingw32
|
||||
(Laine Stump), rpm spec cleanup and split off client only package
|
||||
(Daniel Veillard)</li><li>Bug fixes: Add uniqueness checking for LXC define/create methods
|
||||
(Daniel P. Berrange), Fix removal of transient VMs when LXC aborts
|
||||
(Daniel P. Berrange), Don't try to activate cgroups if not present
|
||||
for LXC (Daniel P. Berrange), Refresh /etc/xen if inotify wasn't
|
||||
(Cole Robinson), Don't loose id on xen domain redefine (Cole
|
||||
Robinson), Fix memory leak in openvz driver (Daniel P. Berrange),
|
||||
Protected against potential crash scenarios (Daniel P. Berrange),
|
||||
Fix crash when attempting to shutdown inactive QEMU vm (Daniel
|
||||
P. Berrange), Fix PCIe FLR detection (Mark McLoughlin), Set perms
|
||||
on /var/lib/libvirt/images to 0711 (Mark McLoughlin), Fix problem
|
||||
writing QEMU pidfile (Daniel P. Berrange), Fix vcpupin on Xen
|
||||
problem (Henrik Persson), Fix RPM upgrades from F11 to F12 (Daniel
|
||||
P. Berrange), Fix deadlock in remote driver domain events (Daniel
|
||||
P. Berrange), qemu: fix monitor socket reconnection (Ryota Ozaki),
|
||||
Fix polkit/netcf disabling on older fedoras (Mark McLoughlin),
|
||||
Fix crashes in Xen capabilities code (Daniel P. Berrange),
|
||||
Always add -no-kvm and -no-kqemu, for qemu domains (Jim Paris),
|
||||
Avoid raising an internal error (Paolo Bonzini), Don't allow NULL
|
||||
paths for BlockStats and InterfaceStats (Cole Robinson), Don't
|
||||
leak vm-monitorpath on re-connect (Mark McLoughlin), Don't restore
|
||||
labels on shared/readonly disks (Daniel P. Berrange), Ensure spawned
|
||||
children have a stderr/out set to /dev/null if requested (Daniel
|
||||
P. Berrange), Ensure test:/// URIs get routed to the non-privileged
|
||||
libvirtd (Daniel P. Berrange), fix another failing "make distcheck"
|
||||
(qemuhelptest) (Jim Meyering), Fix an uninitialized variable
|
||||
in Unix socket open (Jun Koi), Fix configure flags in spec file
|
||||
(Daniel Veillard), Fix error reporting for security driver over
|
||||
remote protocol (Daniel P. Berrange), fix failing "make distcheck"
|
||||
(Jim Meyering), Fix free of unitialized data upon PCI open fail
|
||||
(Daniel P. Berrange), Fix informations about previous git server
|
||||
(Daniel Veillard), Fix memory leaks in esxDomainDumpXML (Matthias
|
||||
Bolte), Fix multiple memory leaks in virsh (Laine Stump), Fix PCI
|
||||
device hotplug/unplug with newer QEMU (Daniel P. Berrange), Fix
|
||||
problem with QEMU monitor welcome prompt confusing libvirt after a
|
||||
libvirtd daemon restart with active guests (Daniel P. Berrange),
|
||||
Fix python examples to use read-write conn (Dan Kenigsberg), Fix
|
||||
reconnect bug for VBox (Pritesh Kothari), Fix SELinux denial during
|
||||
hotplug (Daniel P. Berrange), Fix typo in check for glusterfs format
|
||||
pools (Daniel P. Berrange), Fix typo in storage cloning (Daniel
|
||||
P. Berrange), qemu: Check driver is initialized up front, to avoid
|
||||
segfault. (Cole Robinson), qemu: Try multiple times to open unix
|
||||
monitor socket (Cole Robinson), Release conn lock before reporting
|
||||
errors (end) (Laine Stump), Release conn lock before reporting
|
||||
interface errors (Laine Stump), Remove the network backend if NIC
|
||||
hotplug fails (Mark McLoughlin), Set specific flags for glusterfs
|
||||
fs mounts (Harshavardhana), storage: disk: Default to 'ext2' for
|
||||
new volumes. (Cole Robinson), storage: disk: Fix parthelper '-g'
|
||||
option handling. (Cole Robinson), storage: disk: Fix segfault
|
||||
creating volume without target path (Cole Robinson), storage:
|
||||
Fix deadlock when cloning across pools. (Cole Robinson), Update
|
||||
modified mac address in place in virGetInterface (Laine Stump)</li><li>Improvements: Add an allocation unit when calling qemu-img
|
||||
(Ryota Ozaki), Improve diagnostics when pidfile writing fails
|
||||
(Daniel P. Berrange), Disable IPv6 on virtual networks (Daniel
|
||||
P. Berrange), Allow dnsmasq to provide DNS without DHCP (Daniel
|
||||
P. Berrange), Fix an initialization problem in previous patch
|
||||
(Aron Griffis), Remove MAX_TAP_ID and let kernel do numbering
|
||||
(Aron Griffis), Kernel command line support for UML (Ron Yorston),
|
||||
Activate the interface drivers, and cleanups (Daniel Veillard),
|
||||
Add an error code for conflicting mac addresses (Laine Stump),
|
||||
Add a test interface driver (Laine Stump), Add canonical machine
|
||||
name to capabilities output (Mark McLoughlin), add cd and pwd
|
||||
commands to virsh (Paolo Bonzini), Add checks for some NIC hotplug
|
||||
related features added in qemu-0.10.0 (Mark McLoughlin), Add
|
||||
domain autostart for LXC driver (Daniel P. Berrange), Add domain
|
||||
events support to LXC driver (Daniel P. Berrange), Add interface
|
||||
object list manipulation functions (Laine Stump), Add internal XML
|
||||
parsing/formatting flag (Mark McLoughlin), Add netcf XML schemas
|
||||
and test data (Daniel Veillard), Add new net filesystem glusterfs
|
||||
(Harshavardhana), Add NIC and hostnet names to domain state XML
|
||||
(Mark McLoughlin), Add no_verify query parameter to ESX URIs
|
||||
(Matthias Bolte), Add SCM_RIGHTS support to QEMU monitor code
|
||||
(Mark McLoughlin), Add support for attaching network/bridge NICs
|
||||
in QEMU driver (Mark McLoughlin), add support for netcf XML import
|
||||
and export (Daniel Veillard), Add support for network device detach
|
||||
(Mark McLoughlin), Add support for physical memory access for QEmu
|
||||
(Nguyen Anh Quynh), Add support for VBox 3 and event callbacks on
|
||||
vbox (Pritesh Kothari), Add the monitor type to the domain state
|
||||
XML (Mark McLoughlin), Add virCapsGuestMachine structure (Mark
|
||||
McLoughlin), Add virsh commands for network interface management
|
||||
(Laine Stump), Allow autostart of libvirtd to be disabled with
|
||||
LIBVIRT_AUTOSTART=0 (Daniel P. Berrange), Allow leading dots in VMX
|
||||
config entry names (Matthias Bolte), Assign names to qemu NICs and
|
||||
network backends (Mark McLoughlin), Basic qemu NIC hotplug support
|
||||
(Mark McLoughlin), build: adjust aclocal's search patch to prefer
|
||||
gnulib's m4 files. (Jim Meyering), build: automatically rerun
|
||||
./bootstrap when needed (Jim Meyering), build: make autogen.sh use
|
||||
autoreconf -if (Jim Meyering), build: submodule machinery now works
|
||||
also when no tag is reachable (Jim Meyering), Canonicalize qemu
|
||||
machine types (Mark McLoughlin), Change code generator to give async
|
||||
event messages their own postfix (Daniel P. Berrange), Change the
|
||||
way client event loop watches are managed (Daniel P. Berrange),
|
||||
Decode incoming request header before invoking dispatch code
|
||||
(Daniel P. Berrange), Define an API for registering incoming message
|
||||
dispatch filters (Daniel P. Berrange), ESX driver accept VI API
|
||||
version 4.0 (Matthias Bolte), Fill in vCPU - pCPU current mapping,
|
||||
and vCPU cpuTime for QEMU (Daniel P. Berrange), generate ChangeLog
|
||||
from git logs into distribution tarball (Jim Meyering), Implement
|
||||
qemu dump capabilities (Paolo Bonzini), Implement schedular
|
||||
tunables API using cgroups (Daniel P. Berrange), Implement the
|
||||
new virinterface functions (Laine Stump), Make cgroups a little
|
||||
more efficient (Daniel P. Berrange), Make it easier to debug tests
|
||||
running programs (Daniel P. Berrange), Make qemuBuildHostNetStr()
|
||||
take tapfd as a string (Mark McLoughlin), Make QEMU cgroups use
|
||||
configurable (Daniel P. Berrange), Make qemuCmdFlags available in
|
||||
qemudDomainAttachDevice() (Mark McLoughlin), Move queuing of RPC
|
||||
replies into dispatch code (Daniel P. Berrange), Move vnet_hdr logic
|
||||
into qemudNetworkIfaceConnect() and export it (Mark McLoughlin),
|
||||
Netcf based interface driver implementation (Laine Stump), netcf
|
||||
XML validation and input and output tests (Daniel Veillard), Only
|
||||
probe qemu for machine types when binary changes (Mark McLoughlin),
|
||||
Place every QEMU guest in a private cgroup (Daniel P. Berrange),
|
||||
Probe for QEMU machine types (Mark McLoughlin), Probe QEMU directly
|
||||
for machine aliases if not found in capabilties (Mark McLoughlin),
|
||||
Public API for new virInterface functions (Laine Stump), python:
|
||||
Raise exceptions if virDomain*Stats fail. (Cole Robinson), Refactor
|
||||
cgroups to allow a group per driver to be managed directly (Daniel
|
||||
P. Berrange), Re-factor pci_add reply parsing and parse domain/bus
|
||||
numbers (Mark McLoughlin), Retain disk PCI address across libvirtd
|
||||
restarts (Mark McLoughlin), Retain PCI address from NIC attach
|
||||
(Mark McLoughlin), Run QEMU guests as an unprivileged user (Daniel
|
||||
P. Berrange), Separate code for encoding outgoing remote message
|
||||
headers (Daniel P. Berrange), Split generic RPC message dispatch
|
||||
code out from remote protocol API handlers (Daniel P. Berrange),
|
||||
Split out code for handling incoming method call messages
|
||||
(Daniel P. Berrange), storage: Break out actual raw cloning to
|
||||
separate function. (Cole Robinson), storage: cleanup: do away with
|
||||
'createFile' (Cole Robinson), storage: disk: Use capacity, not
|
||||
allocation, when creating volume. (Cole Robinson), storage: Don't
|
||||
try sparse detection if writing to block device. (Cole Robinson),
|
||||
storage: Implement 'CreateBlockFrom' helper. (Cole Robinson),
|
||||
storage: Implement CreateVolFrom for logical and disk backend. (Cole
|
||||
Robinson), storage: Move most of the FS creation functions to
|
||||
common backend. (Cole Robinson), storage: Refactor FS backend
|
||||
'create' function choosing. (Cole Robinson), Store the interface
|
||||
vlan number in the domain state (Mark McLoughlin), Support video
|
||||
element for QEMU guests (Daniel P. Berrange), Support video tag
|
||||
for defining VGA card properties (Daniel P. Berrange), Switch to
|
||||
using a unix socket for the qemu monitor (Mark McLoughlin), test:
|
||||
Generate net interface names when assigning XML. (Cole Robinson),
|
||||
test: Implement BlockStats and InterfaceStats (Cole Robinson),
|
||||
Use cgroups for block device whitelisting in QEMU guests (Daniel
|
||||
P. Berrange), Use enums for cgroup controller types / labels
|
||||
(Daniel P. Berrange), Use sendmsg() on QEMU monitor socket (Mark
|
||||
McLoughlin), Use virDomainChrTypeFromString() instead of open
|
||||
coding (Mark McLoughlin), Use virFileReadAll/virFileWriteStr for
|
||||
key cgroup read/write helpers (Daniel P. Berrange), virGetinterface
|
||||
matching of MAC and interface name (Laine Stump)</li><li>Cleanups: Fix configure checks from previous commits (Daniel
|
||||
P. Berrange), Avoid a warning if compiling without inotify
|
||||
(Daniel P. Berrange), Remove a stray semicolon (Daniel Veillard),
|
||||
Extend the ESX URL to habdle ports and GSX (Matthias Bolte), Fix
|
||||
escaping of 8-bit high characters (Daniel P. Berrange), , Remove
|
||||
ATTRIBUTE_UNUSED from flags to qemudDomainMigratePerform. (Chris
|
||||
Lalancette), Add a comment about setting errors after
|
||||
qemudStartVMDaemon(). (Chris Lalancette), Fix an erroneous
|
||||
debug error to KVM; it should read QEMU/KVM. (Chris Lalancette),
|
||||
Remove a stray semicolon in qemudDomainMigratePrepare2. (Chris
|
||||
Lalancette), Convert a few stray users of free() in libvirt.c
|
||||
to VIR_FREE(). (Chris Lalancette), Use virGetHostname instead
|
||||
of gethostname. (Chris Lalancette), Fix up a minor indentation
|
||||
issue with virDomainMigratePrepare. (Chris Lalancette), Fix up a
|
||||
silly typo in apibuild.py. (Chris Lalancette), Avoid warning when
|
||||
compiling without IFF_VNET_HDR (Maximilian Wilhelm), Capilize
|
||||
libvirt-client summary (Mark McLoughlin), Move ldconfig calls
|
||||
to libvirt-client %post/%postun (Mark McLoughlin), Convert NEWS
|
||||
to UTF-8 (Mark McLoughlin), Fix trailing whitespace in NEWS
|
||||
(Mark McLoughlin), No need to build require both python-devel
|
||||
and python (Mark McLoughlin), Remove executable perms from
|
||||
/etc/sysconfig/libvirtd (Mark McLoughlin), Use a %postun -p for
|
||||
one line scriptlet (Mark McLoughlin), Don't explicitly require
|
||||
libxml2 (Mark McLoughlin), Fix some unowned directories (Mark
|
||||
McLoughlin), Kill qemu BuildRequires (Mark McLoughlin), Enable
|
||||
netcf by default (Mark McLoughlin), Default to with_polkit
|
||||
(Mark McLoughlin), Make vbox support configurable (Mark
|
||||
McLoughlin), Build with --without-capng if capng is disabled
|
||||
(Mark McLoughlin), BuildRequires libcap-ng-devel not capng-devel
|
||||
(Mark McLoughlin), Drop curl host check when using ESX without
|
||||
check (Shahar Klein), Fix typo in xen capabilities code (Daniel
|
||||
P. Berrange), Add bare format string to printf-derivatives troubles
|
||||
(Laine Stump), Add phyp files to POTFILES, to make syntax-check
|
||||
happy. (Cole Robinson), avoid a make distcheck failure: distribute
|
||||
docs/schemas/interface.rng (Jim Meyering), avoid a make distcheck
|
||||
failure: distribute tests/interfaceschemadata/ (Jim Meyering), avoid
|
||||
a "make syntax-check" failure (Jim Meyering), build: do not emit
|
||||
a trailing blank line into VC'd file, NEWS (Jim Meyering), build:
|
||||
update from gnulib, for latest maint.mk (Jim Meyering), Clean up
|
||||
error handling in qemudDomainAttachNetDevice() (Mark McLoughlin),
|
||||
Cleanup qemu binary detection logic in qemudCapsInitGuest() (Mark
|
||||
McLoughlin), Commit newly generated docs, after changes from
|
||||
commit 2348cf. (Cole Robinson), Factor qemuBuildHostNetStr()
|
||||
out from qemuBuildCommandLine() (Mark McLoughlin), Factor
|
||||
qemuBuildNicStr() out from qemuBuildCommandLine() (Mark McLoughlin),
|
||||
Factor qemudMonitorSend() out of qemudMonitorCommandExtra() (Mark
|
||||
McLoughlin), Fix cgroup compile warnings (Daniel P. Berrange),
|
||||
Fix misc build problems due to new drivers (Daniel P. Berrange),
|
||||
Fix wierd build problems due to autopoint overwriting gnulib m4
|
||||
(Daniel P. Berrange), Makefile.cfg: Rename to... (Jim Meyering),
|
||||
make .gnulib a submodule (Jim Meyering), make "make syntax-check"
|
||||
consistent with "git diff --check" (Jim Meyering), Minor qemu
|
||||
monitor coding style fixes (Mark McLoughlin), Prepare to use
|
||||
maint.mk from gnulib (Jim Meyering), Refactor incoming message
|
||||
handling to prepare for data stream support (Daniel P. Berrange),
|
||||
Refactor message sending to allow code reuse for data streams
|
||||
(Daniel P. Berrange), remove all .cvsignore files (Jim Meyering),
|
||||
remove all trailing blank lines (Jim Meyering), Remove some unused
|
||||
variables and cut long lines (Daniel Veillard), Remove trailing
|
||||
blank lines (Daniel Veillard), Rename a bunch of internal methods
|
||||
to clarify their meaning (Daniel P. Berrange), Rename 'direction'
|
||||
to 'type' in remote_message_header (Daniel P. Berrange), Report
|
||||
the object name on lookup error (Daniel Veillard), Simplify remote
|
||||
driver error reporting (Daniel P. Berrange), skip some of gnulib's
|
||||
new rules (Jim Meyering), use automake-1.11's silent-rules
|
||||
option, when possible (Jim Meyering), use gnumakefile and
|
||||
maintainer-makefile modules from gnulib (Jim Meyering)</li></ul>
|
||||
<h3>0.6.5: Jul 3 2009</h3>
|
||||
<ul><li>New features: create storage columes on disk backend (Henrik Persson),
|
||||
drop of capabilities based on libcap-ng when possible (Daniel
|
||||
@ -370,7 +840,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
interfaces (Eduardo Habkost), increase timeout for initial QEmu
|
||||
monitor poll (Cole Robinson)</li><li>Cleanups:fix improper initialisations (Jim Meyering)</li></ul>
|
||||
<h3>0.5.0: Nov 25 2008</h3>
|
||||
<ul><li>New features: CPU and scheduler support for LXC (Dan Smith), SDL display configuration (Daniel Berrange), domain lifecycle event support for QEmu and Xen with python bindings (Ben Guthro and Daniel Berrange), KVM/QEmu migration support (Rich Jones and Chris Lalancette), User Mode Linux driver (Daniel Berrange), API for node device enumeration using HAL and DeviceKit with python bindings (David Lively), </li><li>Portability: RHEL build fixes, VPATH build (Guido Gunther), many MinGW related cleanups and fixes (Richard Jones), compilation without libvirtd (Richard Jones), Add a Windows icon (Richard Jones), sys/poll.h portability fixes (Daniel Berrange), gnulib and mingw cleanups (Jim Meyering), </li><li>Documentation: virsh man page cleanups (Mark McLoughlin), doc for NIC model selection (Richard Jones), monitoring section, link to AMQP bindings, inew APIs, UML driver docs (Daniel Berrange), </li><li>Bug fixes: Xen interfaces ordering (Jim Fehlig), startup timeout with multiple pty (Cole Robinson), segfault if QEmu without active virtual network (Cole Robinson), qemu small leak (Eduardo Habkost), index creation for more than 26 disks (Sanjay Rao and Chris Wright), virRealloc handling of 0 (Daniel Berrange), missing pointer initialization (Chris Lalancette), bus device index bug (Guido G<>nther), avoid crash in some error patch (Chris Lalancette), fix a problem in storage back-end (Chris Lalancette), minimum domain memory size check for Xen (Shigeki Sakamoto), switch off QEmu cache if device is shared (Charles Duffy), logical volume definition before scan bug (Chris Lalancette), a couple of memory leaks on QEmu vnc (Jim Meyering), lvs parsing fixes (Cole Robinson), </li><li>Improvements: LXC resources control and internal cgroup API (Dan Smith), virDomainCreateLinux renamed virDomainDefineXML, network driver modularization (Daniel Berrange), change the way domain and net are reported in errors (Jim Meyering), partition table scan on iSCSI (Chris Lalancette), qemudDiskDeviceName to handle normal disks (Guido G<>nther), qemudDomainBlockStats improvement (Guido G<>nther), scsi/virtio hotplug support for KVM (Guido G<>nther), USB hot addition in QEmu (Guido G<>nther), logical pool and storage backend XML dump improvement (Chris Lalancette), MAC addresses prefix per driver (Daniel Berrange), OpenVZ getVersion support (Daniel Berrange), hot removal of scsi/virtio disks for KVM (Guido G<>nther), test storage driver (Cole Robinson), iSCSI and disk storage driver improvement on path handling (Chris Lalancette), UUID and ID support for Xenner (Daniel Berrange), better logging when when executing commands (Cole Robinson), bridged network for OpenVZ (Daniel Berrange), OpenVZ config file params (Evgeniy Sokolov), allow to build drivers as libtool convenience libs (Daniel Berrange), fully versioned linker script for exported ABI (Daniel Berrange), Push URI probing down into drivers open (Daniel Berrange), move all stateful drivers into the daemon binary (Daniel Berrange), improve domain event with a detail field (Daniel Berrange), domain events for QEMU driver (Daniel Berrange), event unregister callback crash (David Lively), plug a few leaks (Daniel Berrange), internal APIs for handling node device XML config (David Lively), tweaks to node device implementation (Daniel Berrange), OpenVZ vCPUs values init (Evgeniy Sokolov)</li><li>Cleanups: C99 initializers (Guido Gunther), test output (Cole Robinson), debug macro centralization (Cole Robinson), various error handling (Guido G<>nther), safewrite use cleanup (Jim Meyering), centralize error reporting logic (Cole Robinson), avoid printf warnings (Daniel Berrange), use arrays instead of list for internal APIs (Daniel Berrange), remove many format string warnings Jim Meyering), avoid syntax check warnings (Chris Lalancette), improve po-check and list generation (Jim Meyering), .gitignore generation and handling (Jim Meyering), use ARRAY_CARDINALITY (Jim Meyering), gnulib updates and switch to use netdb.h (Jim Meyering), drop usage of socket_errno (Jim Meyering), remove socketcompat.h (Jim Meyering), more tests (Jim Meyering), drop virStringList (Daniel Berrange), reformatting and isolation of the error APIs (Daniel Berrange), cleanup internal.h and move internal APIs in specific headers (Daniel Berrange), move domain events helpers into domain_events.c (Daniel Berrange), cleanup the way optional modules are compiled (Daniel Berrange), add new logging module, optional dlopen of drivers (Daniel Berrange), various new tests (Jim Meyering), cleanups when Xen is not configured in (Daniel Berrange), add some missing functions comments (Jim Meyering), </li></ul>
|
||||
<ul><li>New features: CPU and scheduler support for LXC (Dan Smith), SDL display configuration (Daniel Berrange), domain lifecycle event support for QEmu and Xen with python bindings (Ben Guthro and Daniel Berrange), KVM/QEmu migration support (Rich Jones and Chris Lalancette), User Mode Linux driver (Daniel Berrange), API for node device enumeration using HAL and DeviceKit with python bindings (David Lively), </li><li>Portability: RHEL build fixes, VPATH build (Guido Gunther), many MinGW related cleanups and fixes (Richard Jones), compilation without libvirtd (Richard Jones), Add a Windows icon (Richard Jones), sys/poll.h portability fixes (Daniel Berrange), gnulib and mingw cleanups (Jim Meyering), </li><li>Documentation: virsh man page cleanups (Mark McLoughlin), doc for NIC model selection (Richard Jones), monitoring section, link to AMQP bindings, inew APIs, UML driver docs (Daniel Berrange), </li><li>Bug fixes: Xen interfaces ordering (Jim Fehlig), startup timeout with multiple pty (Cole Robinson), segfault if QEmu without active virtual network (Cole Robinson), qemu small leak (Eduardo Habkost), index creation for more than 26 disks (Sanjay Rao and Chris Wright), virRealloc handling of 0 (Daniel Berrange), missing pointer initialization (Chris Lalancette), bus device index bug (Guido G<>nther), avoid crash in some error patch (Chris Lalancette), fix a problem in storage back-end (Chris Lalancette), minimum domain memory size check for Xen (Shigeki Sakamoto), switch off QEmu cache if device is shared (Charles Duffy), logical volume definition before scan bug (Chris Lalancette), a couple of memory leaks on QEmu vnc (Jim Meyering), lvs parsing fixes (Cole Robinson),</li><li>Improvements: LXC resources control and internal cgroup API (Dan Smith), virDomainCreateLinux renamed virDomainDefineXML, network driver modularization (Daniel Berrange), change the way domain and net are reported in errors (Jim Meyering), partition table scan on iSCSI (Chris Lalancette), qemudDiskDeviceName to handle normal disks (Guido G<>nther), qemudDomainBlockStats improvement (Guido G<>nther), scsi/virtio hotplug support for KVM (Guido G<>nther), USB hot addition in QEmu (Guido G<>nther), logical pool and storage backend XML dump improvement (Chris Lalancette), MAC addresses prefix per driver (Daniel Berrange), OpenVZ getVersion support (Daniel Berrange), hot removal of scsi/virtio disks for KVM (Guido G<>nther), test storage driver (Cole Robinson), iSCSI and disk storage driver improvement on path handling (Chris Lalancette), UUID and ID support for Xenner (Daniel Berrange), better logging when when executing commands (Cole Robinson), bridged network for OpenVZ (Daniel Berrange), OpenVZ config file params (Evgeniy Sokolov), allow to build drivers as libtool convenience libs (Daniel Berrange), fully versioned linker script for exported ABI (Daniel Berrange), Push URI probing down into drivers open (Daniel Berrange), move all stateful drivers into the daemon binary (Daniel Berrange), improve domain event with a detail field (Daniel Berrange), domain events for QEMU driver (Daniel Berrange), event unregister callback crash (David Lively), plug a few leaks (Daniel Berrange), internal APIs for handling node device XML config (David Lively), tweaks to node device implementation (Daniel Berrange), OpenVZ vCPUs values init (Evgeniy Sokolov)</li><li>Cleanups: C99 initializers (Guido Gunther), test output (Cole Robinson), debug macro centralization (Cole Robinson), various error handling (Guido G<>nther), safewrite use cleanup (Jim Meyering), centralize error reporting logic (Cole Robinson), avoid printf warnings (Daniel Berrange), use arrays instead of list for internal APIs (Daniel Berrange), remove many format string warnings Jim Meyering), avoid syntax check warnings (Chris Lalancette), improve po-check and list generation (Jim Meyering), .gitignore generation and handling (Jim Meyering), use ARRAY_CARDINALITY (Jim Meyering), gnulib updates and switch to use netdb.h (Jim Meyering), drop usage of socket_errno (Jim Meyering), remove socketcompat.h (Jim Meyering), more tests (Jim Meyering), drop virStringList (Daniel Berrange), reformatting and isolation of the error APIs (Daniel Berrange), cleanup internal.h and move internal APIs in specific headers (Daniel Berrange), move domain events helpers into domain_events.c (Daniel Berrange), cleanup the way optional modules are compiled (Daniel Berrange), add new logging module, optional dlopen of drivers (Daniel Berrange), various new tests (Jim Meyering), cleanups when Xen is not configured in (Daniel Berrange), add some missing functions comments (Jim Meyering),</li></ul>
|
||||
<h3>0.4.6: Sep 23 2008</h3>
|
||||
<ul><li>Documentation: fix some comments in API (Anton Protopopov),
|
||||
cleanup and extension of bindings and windows pages (Richard Jones)</li><li>Portability: missing include file (Richard Jones)</li><li>Bug fixes: avoid a segfault if missing qemu emulator (Cole Robinson),
|
||||
|
@ -5,6 +5,495 @@
|
||||
<p>Here is the list of official releases, however since it is early on in the
|
||||
development of libvirt, it is preferable when possible to just use the <a href="downloads.html">CVS version or snapshot</a>, contact the mailing list
|
||||
and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
<h3>0.7.1: Sep 15 2009</h3>
|
||||
<ul>
|
||||
<li>New features:
|
||||
Add support for encrypted (qcow) volume creation. (Miloslav Trmač),
|
||||
Secret manipulation public API (Miloslav Trmač),
|
||||
Multipath storage support module (Dave Allan),
|
||||
VBox add Storage Volume support (Pritesh Kothari),
|
||||
Support configuration of huge pages in guests (Daniel P. Berrange),
|
||||
Support new PolicyKit 1.0 API (Daniel P. Berrange),
|
||||
Compressed save image format for Qemu (Chris Lalancette, Charles Duffy
|
||||
and Jim Meyering),
|
||||
QEmu add host PCI device hotplug support (Mark McLoughlin)
|
||||
</li>
|
||||
<li>Documentation:
|
||||
Minor comment changes (Laine Stump),
|
||||
Fix up virNodeGetCellsFreeMemory (Chris Lalancette),
|
||||
Fix some typos and remove unhelpful acronyms in QEMU docs (Daniel P. Berrange),
|
||||
Add documentation about the QEMU driver security features (Daniel P. Berrange),
|
||||
Remove 'the-the' typo in docs (Daniel P. Berrange),
|
||||
Fix some URLs in virsh manpage (Mark McLoughlin),
|
||||
Add link to AbiCloud web management system (Daniel P. Berrange),
|
||||
Update logging documentation (Amy Griffis)
|
||||
</li>
|
||||
<li>Portability:
|
||||
Fix win32 platform build (Daniel P. Berrange)
|
||||
</li>
|
||||
<li>Bug fixes:
|
||||
VBox bug when starting machine from old versions (Pritesh Kothari),
|
||||
ESX avoid potential leaks (Matthias Bolte),
|
||||
Fix more OOM handling bugs (Daniel P. Berrange),
|
||||
Fix logging buffer overrun read (Daniel P. Berrange),
|
||||
Fix misc thread locking bugs / bogus warnings (Daniel P. Berrange),
|
||||
Fix regression from "Avoid polling on FDs with no events" (Chris Lalancette),
|
||||
Close logfile fd after spawning qemu (Ryota Ozaki),
|
||||
Check for libssh2 >= 1.0 for phy driver (Maximilian Wilhelm),
|
||||
Avoid another leak in src/xend_internal.c (Matthias Bolte),
|
||||
Avoid a leak in xenDaemonLookupByID (Matthias Bolte),
|
||||
VBox fix minor bugs in display and added OOM checks (Pritesh Kothari),
|
||||
Some close/fclose/closedir calls are missing (Matthias Bolte),
|
||||
lxc_container.c: avoid a leak on error paths (Jim Meyering),
|
||||
Fix several memory leaks (Ryota Ozaki),
|
||||
Fix a memory leak in virsh (Laine Stump),
|
||||
Fix ID field in virDomainPtr after starting Xen VM (Daniel P. Berrange),
|
||||
Fix memory leak of monitor character device (Daniel P. Berrange),
|
||||
Automatically set correct ownership of QEMU state directories (Daniel P. Berrange),
|
||||
Avoid polling on FDs with no events enabled (Daniel P. Berrange),
|
||||
esx_vi: return -1 upon failure, as intended (Matthias Bolte),
|
||||
python: let libvirt_virConnectDomainEventCallback indicate success (Jim Meyering),
|
||||
uml_conf.c: don't return an uninitialized pointer (Jim Meyering),
|
||||
storage_backend.c: assure clang that inputvol can't be NULL (Jim Meyering),
|
||||
libvir.c: avoid NULL dereference in virStoragePoolSetAutostart (Jim Meyering),
|
||||
lxc: avoid NULL dereference upon getmntent failure (Jim Meyering),
|
||||
storage_backend_fs: avoid NULL dereference on opendir failure (Jim Meyering),
|
||||
Fix bugs in virDomainMigrate v2 code. (Chris Lalancette),
|
||||
VMware ESX: Don't warn on some query parameter (Matthias Bolte),
|
||||
Don't blindly reorder disk drives (Daniel P. Berrange),
|
||||
Fix sexpr2string() to handle empty list. (Jim Fehlig),
|
||||
Fix driver entry table for UML numa APIs (Daniel P. Berrange),
|
||||
Fix crash in virsh vol-key command (Pritesh Kothari),
|
||||
517157 fix selinux problem with images on NFS (Darryl L. Pierce),
|
||||
Fix phypOpen() escape_specialcharacters (Mattias Bolte),
|
||||
Power Hypervisor: fix potential segfault (Mattias Bolte),
|
||||
Fix bridge/tap system error reporting (Mark McLoughlin),
|
||||
Reset PCI host devices after hot-unplug (Mark McLoughlin),
|
||||
Reset unmanaged PCI host devices before hotplug (Mark McLoughlin),
|
||||
Fix up connection reference counting. (Chris Lalancette),
|
||||
Fix LXC driver crash when kernel doesn't support clone (Daniel P. Berrange),
|
||||
Make LXC / UML drivers robust against NUMA topology brokenness (Daniel P. Berrange),
|
||||
Run 'cont' on successful migration finish. (Chris Lalancette),
|
||||
Fix QEMU domain status after restore. (Chris Lalancette),
|
||||
Handle kernels with no ipv6 support (Mark McLoughlin),
|
||||
Set perms on /var/lib/libvirt/boot to 0711 (Mark McLoughlin),
|
||||
chown kernel/initrd before spawning qemu (Mark McLoughlin),
|
||||
Several fixes to libvirtd's log setup (Amy Griffis),
|
||||
Fix memleak if esxOpen fails (Matthias Bolte)
|
||||
</li>
|
||||
<li>Improvement:
|
||||
support lzop save compression for qemu (Charles Duffy),
|
||||
VBox 3.0.6 API change support (Pritesh Kothari),
|
||||
Add UUID definition required by storage encryption import (Daniel P. Berrange),
|
||||
Make secrets RNG more strict (Daniel P. Berrange),
|
||||
Fill in secret UUID for qcow encryption (Daniel P. Berrange),
|
||||
Add usage type/id as a public API property of virSecret (Daniel P. Berrange),
|
||||
Fix UUID handling in secrets/storage encryption APIs (Daniel P. Berrange),
|
||||
Save vcpuinfo in status file (Daniel P. Berrange),
|
||||
Restart libvirtd upon RPM upgrade (Daniel P. Berrange),
|
||||
Add support for qcow encrypted volumes to qemu. (Miloslav Trmač),
|
||||
Provide missing passphrase when creating a volume. (Miloslav Trmač),
|
||||
Add virsh commands for secrets APIs (Miloslav Trmač),
|
||||
Local file implementation of secret driver API (Miloslav Trmač),
|
||||
Mask out flags used internally for virSecretGetValue (Miloslav Trmač),
|
||||
Add <usage> to <secret> docs (Miloslav Trmač),
|
||||
also allow use of XZ for Qemu image compression (Jim Meyering),
|
||||
Support relabelling of USB and PCI devices (Daniel P. Berrange),
|
||||
Add helper APIs for iterating over PCI device resource files (Daniel P. Berrange),
|
||||
Add helper module for dealing with USB host devices (Daniel P. Berrange),
|
||||
Test that domain-specific qemu machine types are used correctly (Mark McLoughlin),
|
||||
Probe machine types from kvm binary too (Mark McLoughlin),
|
||||
Look up machine types from all domains in qemudGetOldMachines() (Mark McLoughlin),
|
||||
Test qemu machine aliases (Mark McLoughlin),
|
||||
Add qemu -help test data for qemu-kvm-0.11.0-rc2 (Mark McLoughlin),
|
||||
Add a more featureful qemu capabilities test data (Mark McLoughlin),
|
||||
Add arm arch to capabilities schema (Mark McLoughlin),
|
||||
Update capabilities schema to allow multiple machines per domain (Mark McLoughlin),
|
||||
Add esx and tcp migration uri transports to capabilities schema (Mark McLoughlin),
|
||||
Reintroduce support for lzop compression (Charles Duffy),
|
||||
build: update gnulib submodule to latest (Jim Meyering),
|
||||
Add flags and requires for Multipath storage (Daniel Veillard),
|
||||
ESX raise error if UUID parse failed (Matthias Bolte),
|
||||
ESX add domain undefine based on esxVI_UnregisterVM (Matthias Bolte),
|
||||
ESX add esxGetCapabilities() with basic defaults (Matthias Bolte),
|
||||
Switch Power Hypervisor to libssh2 (Eduardo Otubo),
|
||||
Allow libvirtd to RPC to external libvirtd (Chris Lalancette),
|
||||
Add support for setting disk drive serial numbers (Daniel P. Berrange),
|
||||
VBox support for defining/dumping video devices (Pritesh Kothari),
|
||||
Generic parsing support for video acceleration (Pritesh Kothari),
|
||||
VMware ESX: Allow ethernet address type 'vpx' (Matthias Bolte),
|
||||
Support for getting/setting number of cpus in VBox (Pritesh Kothari),
|
||||
Make handling of monitor prompts more general. (Miloslav Trmač),
|
||||
Attach encryption information to virDomainDiskDef. (Miloslav Trmač),
|
||||
Recognize encryption format of qcow volumes. (Miloslav Trmač),
|
||||
Attach encryption information to virStorageVolDef. (Miloslav Trmač),
|
||||
Add volume encryption information handling. (Miloslav Trmač),
|
||||
Secret manipulation API docs refresh and wire up python generator (Miloslav Trmač),
|
||||
Secret manipulation remote client (Miloslav Trmač),
|
||||
Secret manipulation libvirtd wire protocol and remote dispatcher (Miloslav Trmač),
|
||||
Secret manipulation public API implementation (Miloslav Trmač),
|
||||
Secret manipulation internal API (Miloslav Trmač),
|
||||
Add test for recently fixed crash with latest XenD (Daniel P. Berrange),
|
||||
Don't expose 'vnet%d' to the user (Mark McLoughlin),
|
||||
Maintain a list of active PCI hostdevs and use it in pciResetDevice() (Mark McLoughlin),
|
||||
Simplify PCI hostdev prepare/re-attach using a pciDeviceList type (Mark McLoughlin),
|
||||
Use pci_addr=auto with QEMU's pci_add monitor command (Mark McLoughlin),
|
||||
Check active domain hostdevs before allowing PCI reset (Mark McLoughlin),
|
||||
Allow pciResetDevice() to reset multiple devices (Mark McLoughlin),
|
||||
Improve PCI host device reset error message (Mark McLoughlin),
|
||||
Reset and re-attach PCI host devices on guest shutdown (Mark McLoughlin),
|
||||
Allow PM reset on multi-function PCI devices (Mark McLoughlin),
|
||||
Detect KVM's PCI device assignment support (Mark McLoughlin),
|
||||
Split virDomainMigrate into functions. (Chris Lalancette),
|
||||
Consolidate code for parsing the logging env (Amy Griffis)
|
||||
</li>
|
||||
<li>Cleanups:
|
||||
Remove accidentally added UUID re-definition in storage schema (Daniel P. Berrange),
|
||||
ESX cleanup of CPU model strings (Matthias Bolte),
|
||||
Fix use of dlopen modules (Daniel P. Berrange),
|
||||
Consolidate "cont" into qemudMonitorSendCont() (Miloslav Trmač),
|
||||
Cleanup sec driver error reporting to use virReportSystemError (Daniel P. Berrange),
|
||||
Port QEMU driver to use USB/PCI device helpers (Daniel P. Berrange),
|
||||
Simplify and fix qemudCanonicalizeMachine() (Mark McLoughlin),
|
||||
Split up qemudGetOldMachines() (Mark McLoughlin),
|
||||
Re-factor qemu test machine allocation code (Mark McLoughlin),
|
||||
Canonicalize the qemu machine type in qemuxml2argvtest (Mark McLoughlin),
|
||||
Dump qemu driver capabilities if test debugging enabled (Mark McLoughlin),
|
||||
Fix formatting of machine types in capabilities XML (Mark McLoughlin),
|
||||
qemu_driver.c: factor out more duplication (Jim Meyering),
|
||||
Deprecate lzma and lzop in favor of xz, add dep (Daniel Veillard),
|
||||
qemu_driver.c: factor out duplication in compression-type handling (Jim Meyering),
|
||||
openvz_conf.c: remove dead store to "p"; use strchrnul (Jim Meyering),
|
||||
Remove some tabs used for indent (Daniel Veillard),
|
||||
Updated a number of localizations and regenerated (Daniel Veillard),
|
||||
Add a missing comment (Miloslav Trmač),
|
||||
Fix a pasto in storage_encryption_conf.c (Miloslav Trmač),
|
||||
xm_internal.c: remove four useless comparisons after strchr (Jim Meyering),
|
||||
xm_internal.c: remove dead increment of "data" (Jim Meyering),
|
||||
network_driver.c: remove dead store to "err" (Jim Meyering),
|
||||
iptables.c: remove dead store to "s" (Jim Meyering),
|
||||
util.c: avoid dead store to "flag" (Jim Meyering),
|
||||
domain_conf.c: remove two dead stores (Jim Meyering),
|
||||
xm_internal.c: remove two ret=... dead stores (Jim Meyering),
|
||||
xm_internal.c: remove dead stores of local, "type" (Jim Meyering),
|
||||
network_conf.c: remove dead store to "err" (Jim Meyering),
|
||||
openvz_driver.c: avoid dead store to "err" (Jim Meyering),
|
||||
xend_internal.c: Remove two dead stores to "ret" (Jim Meyering),
|
||||
storage_driver.c: remove two dead stores to "backend" (Jim Meyering),
|
||||
qemu_conf.c: add a comment suggesting why we leave a dead-store (Jim Meyering),
|
||||
hash.c: remove a dead store (Jim Meyering),
|
||||
interface_conf.c: remove a dead-store and declaration (Jim Meyering),
|
||||
eventtest.c: detect write failure and avoid dead stores (Jim Meyering),
|
||||
openvz_conf.c: Remove dead store to copy_fd (Jim Meyering),
|
||||
storage_backend_logical.c: appease clang: remove useless increment (Jim Meyering),
|
||||
ESX simplify SOAP request and response handling (Matthias Bolte),
|
||||
ESX use virXPathNode*() to simplify XPath handling (Matthias Bolte),
|
||||
ESX: make esxVI_GetVirtualMachineIdentity() robust (Matthias Bolte),
|
||||
ESX: Fix VMX path parsing and URL encoding (Matthias Bolte),
|
||||
VBox driver cleanups (Pritesh Kothari),
|
||||
PHYP driver cleanups (Daniel Veillard),
|
||||
Move QEMU monitor socket in /var/lib/libvirt/qemu (Daniel P. Berrange),
|
||||
xen_internal.c: remove two unused local variables (Jim Meyering),
|
||||
mdns.c: remove dead initialization (Jim Meyering),
|
||||
node_device_conf.c: remove dead initialization (Jim Meyering),
|
||||
openvz_conf.c: don't use undefined local, "net" (Jim Meyering),
|
||||
test.c: don't use undefined local, "def" (Jim Meyering),
|
||||
remote_internal.c: appease clang (Jim Meyering),
|
||||
infra: define ATTRIBUTE_NONNULL to mark non-NULL parameters (Jim Meyering),
|
||||
lxc: don't unlink(NULL) in main (Jim Meyering),
|
||||
storage_conf.c: avoid overflow upon use of "z" or "Z" (zebi) suffix (Jim Meyering),
|
||||
VBox cleanup and update of networking shutdown (Pritesh Kothari),
|
||||
Box cleanup and update of networking XML functions (Pritesh Kothari),
|
||||
Fix misc OOM bugs (Daniel P. Berrange),
|
||||
Misc fixes to secrets API code (Daniel P. Berrange),
|
||||
Only add glusterfs dep for Fedora >= 11 (Daniel P. Berrange),
|
||||
Remove redundant base64 include file (Daniel P. Berrange),
|
||||
Don't assume buffered output echoes the command. (Miloslav Trmač),
|
||||
Update chinese, polish and spanish localizations (Daniel Veillard),
|
||||
OpenVZ: accept NULL as type for GetMaxVCPUs. (Chris Lalancette),
|
||||
Remove use of strncpy in qemudExtractMonitorPath. (Chris Lalancette),
|
||||
Refactor policycode auth code to avoid compiler warnings (Daniel P. Berrange),
|
||||
spec file: add URL to Source tag (Mark McLoughlin),
|
||||
Small fixes for qemu save compression. (Chris Lalancette),
|
||||
Fix thinko in PCI hostdev detach (Mark McLoughlin),
|
||||
Revert changes to allow pciResetDevice() reset multiple devices (Mark McLoughlin),
|
||||
Fix list updating after disk/network/hostdev hot-unplug (Mark McLoughlin),
|
||||
Re-name remote_internal.c:driver to remote_driver (Mark McLoughlin),
|
||||
Cosmetic change to 'virsh nodedev-list --tree' output (Mark McLoughlin),
|
||||
Re-factor hostdev hotplug (Mark McLoughlin),
|
||||
Remove a duplicated assignment in Xen PCI parsing. (Chris Lalancette),
|
||||
Fix up a few minor indentation issues. (Chris Lalancette),
|
||||
Fix phyp escape_specialcharacters. (Chris Lalancette),
|
||||
Make openvzGetVPSUUID take a len. (Chris Lalancette),
|
||||
Minor cleanup of error path for c_oneVmInfo. (Chris Lalancette),
|
||||
Fix up a whitespace in comments in src/console.c (Chris Lalancette),
|
||||
Fix up a stray whitespace in virHashGrow. (Chris Lalancette),
|
||||
Remove unsafe strncpy from esx_vmx.c (Chris Lalancette),
|
||||
Cleanup VIR_LOG_DEBUG parsing in eventtest (Amy Griffis),
|
||||
Tighten libvirt's parsing of logging env (Amy Griffis),
|
||||
Cleanup structure name naming (Matthias Bolte),
|
||||
Add proper OOM reporting for esxDomainGetOSType (Matthias Bolte)
|
||||
</li>
|
||||
</ul>
|
||||
<h3>0.7.0: Aug 5 2009</h3>
|
||||
<ul>
|
||||
<li>New features: Interface implementation based on netcf (Laine Stump,
|
||||
Daniel Veillard), Add new net filesystem glusterfs (Harshavardhana),
|
||||
Initial VMWare ESX driver (Matthias Bolte), Add support for VBox
|
||||
3 and event callbacks on vbox (Pritesh Kothari), First version
|
||||
of the Power Hypervisor driver (Eduardo Otubo), Run QEMU guests
|
||||
as an unprivileged user (Daniel P. Berrange), Support cgroups
|
||||
in QEMU driver (Daniel P. Berrange), QEmu hotplug NIC support
|
||||
(Mark McLoughlin), Storage cloning for LVM and Disk backends(Cole
|
||||
Robinson), Switching to GIT (Jim Meyering)</li>
|
||||
|
||||
<li>Documentation: Typo and comment fixes (Aron Griffis),
|
||||
Fix virCapabilitiesDefaultGuestMachine documentation. (Chris
|
||||
Lalancette), ESX Scheduler documentation and cleanup (Matthias
|
||||
Bolte), Update the java bindings page (Bryan Kearney), Added
|
||||
Matthias Bolte to AUTHORS list (Daniel Veillard), doc: clone+build
|
||||
instructions (Jim Meyering), docs: say that the old repository
|
||||
is deprecated... (Jim Meyering), document tcp listen and raw
|
||||
wire option (Guido Günther), Fix docs and code disagreements
|
||||
for character devices. (Cole Robinson), Fix documentation of
|
||||
virStoragePoolUndefine return (Thomas Treutner), Fix gitweb link on
|
||||
download page. (Cole Robinson), update download informations after
|
||||
switch to git (Daniel Veillard), Update links to bugzilla (Garry
|
||||
Dolley), Update the links for RHEL libvirt bugzillas (Garry Dolley)</li>
|
||||
|
||||
<li>Portability: Xen Inotify support needs sys/inotify.h
|
||||
(Maximilian Wilhelm), Workaround for broken GCC in Debian Etch
|
||||
(Maximilian Wilhelm), LXC driver requires sched.h and unshare()
|
||||
(Maximilian Wilhelm), Configure UML support only if sys/inotify.h
|
||||
present (Maximilian Wilhelm), Fix libcurl automatic check and ESX
|
||||
status (Maximilian Wilhelm), Enable ESX driver build on Mingw32
|
||||
(Daniel P. Berrange), Fix build on mingw32 by disabling netcf
|
||||
(Daniel P. Berrange), Reduce glusterfs dependency to 2.0.1
|
||||
(Mark McLoughlin), Desactivate phyp build and indicate libssh
|
||||
builreq (Daniel Veillard), Fix misc Win32 compile warnings
|
||||
(Daniel P. Berrange), Rename variable for compilation in Mingw32
|
||||
(end) (Laine Stump), Rename variable for compilation in Mingw32
|
||||
(Laine Stump), rpm spec cleanup and split off client only package
|
||||
(Daniel Veillard)</li>
|
||||
|
||||
<li>Bug fixes: Add uniqueness checking for LXC define/create methods
|
||||
(Daniel P. Berrange), Fix removal of transient VMs when LXC aborts
|
||||
(Daniel P. Berrange), Don't try to activate cgroups if not present
|
||||
for LXC (Daniel P. Berrange), Refresh /etc/xen if inotify wasn't
|
||||
(Cole Robinson), Don't loose id on xen domain redefine (Cole
|
||||
Robinson), Fix memory leak in openvz driver (Daniel P. Berrange),
|
||||
Protected against potential crash scenarios (Daniel P. Berrange),
|
||||
Fix crash when attempting to shutdown inactive QEMU vm (Daniel
|
||||
P. Berrange), Fix PCIe FLR detection (Mark McLoughlin), Set perms
|
||||
on /var/lib/libvirt/images to 0711 (Mark McLoughlin), Fix problem
|
||||
writing QEMU pidfile (Daniel P. Berrange), Fix vcpupin on Xen
|
||||
problem (Henrik Persson), Fix RPM upgrades from F11 to F12 (Daniel
|
||||
P. Berrange), Fix deadlock in remote driver domain events (Daniel
|
||||
P. Berrange), qemu: fix monitor socket reconnection (Ryota Ozaki),
|
||||
Fix polkit/netcf disabling on older fedoras (Mark McLoughlin),
|
||||
Fix crashes in Xen capabilities code (Daniel P. Berrange),
|
||||
Always add -no-kvm and -no-kqemu, for qemu domains (Jim Paris),
|
||||
Avoid raising an internal error (Paolo Bonzini), Don't allow NULL
|
||||
paths for BlockStats and InterfaceStats (Cole Robinson), Don't
|
||||
leak vm-monitorpath on re-connect (Mark McLoughlin), Don't restore
|
||||
labels on shared/readonly disks (Daniel P. Berrange), Ensure spawned
|
||||
children have a stderr/out set to /dev/null if requested (Daniel
|
||||
P. Berrange), Ensure test:/// URIs get routed to the non-privileged
|
||||
libvirtd (Daniel P. Berrange), fix another failing "make distcheck"
|
||||
(qemuhelptest) (Jim Meyering), Fix an uninitialized variable
|
||||
in Unix socket open (Jun Koi), Fix configure flags in spec file
|
||||
(Daniel Veillard), Fix error reporting for security driver over
|
||||
remote protocol (Daniel P. Berrange), fix failing "make distcheck"
|
||||
(Jim Meyering), Fix free of unitialized data upon PCI open fail
|
||||
(Daniel P. Berrange), Fix informations about previous git server
|
||||
(Daniel Veillard), Fix memory leaks in esxDomainDumpXML (Matthias
|
||||
Bolte), Fix multiple memory leaks in virsh (Laine Stump), Fix PCI
|
||||
device hotplug/unplug with newer QEMU (Daniel P. Berrange), Fix
|
||||
problem with QEMU monitor welcome prompt confusing libvirt after a
|
||||
libvirtd daemon restart with active guests (Daniel P. Berrange),
|
||||
Fix python examples to use read-write conn (Dan Kenigsberg), Fix
|
||||
reconnect bug for VBox (Pritesh Kothari), Fix SELinux denial during
|
||||
hotplug (Daniel P. Berrange), Fix typo in check for glusterfs format
|
||||
pools (Daniel P. Berrange), Fix typo in storage cloning (Daniel
|
||||
P. Berrange), qemu: Check driver is initialized up front, to avoid
|
||||
segfault. (Cole Robinson), qemu: Try multiple times to open unix
|
||||
monitor socket (Cole Robinson), Release conn lock before reporting
|
||||
errors (end) (Laine Stump), Release conn lock before reporting
|
||||
interface errors (Laine Stump), Remove the network backend if NIC
|
||||
hotplug fails (Mark McLoughlin), Set specific flags for glusterfs
|
||||
fs mounts (Harshavardhana), storage: disk: Default to 'ext2' for
|
||||
new volumes. (Cole Robinson), storage: disk: Fix parthelper '-g'
|
||||
option handling. (Cole Robinson), storage: disk: Fix segfault
|
||||
creating volume without target path (Cole Robinson), storage:
|
||||
Fix deadlock when cloning across pools. (Cole Robinson), Update
|
||||
modified mac address in place in virGetInterface (Laine Stump)</li>
|
||||
|
||||
<li>Improvements: Add an allocation unit when calling qemu-img
|
||||
(Ryota Ozaki), Improve diagnostics when pidfile writing fails
|
||||
(Daniel P. Berrange), Disable IPv6 on virtual networks (Daniel
|
||||
P. Berrange), Allow dnsmasq to provide DNS without DHCP (Daniel
|
||||
P. Berrange), Fix an initialization problem in previous patch
|
||||
(Aron Griffis), Remove MAX_TAP_ID and let kernel do numbering
|
||||
(Aron Griffis), Kernel command line support for UML (Ron Yorston),
|
||||
Activate the interface drivers, and cleanups (Daniel Veillard),
|
||||
Add an error code for conflicting mac addresses (Laine Stump),
|
||||
Add a test interface driver (Laine Stump), Add canonical machine
|
||||
name to capabilities output (Mark McLoughlin), add cd and pwd
|
||||
commands to virsh (Paolo Bonzini), Add checks for some NIC hotplug
|
||||
related features added in qemu-0.10.0 (Mark McLoughlin), Add
|
||||
domain autostart for LXC driver (Daniel P. Berrange), Add domain
|
||||
events support to LXC driver (Daniel P. Berrange), Add interface
|
||||
object list manipulation functions (Laine Stump), Add internal XML
|
||||
parsing/formatting flag (Mark McLoughlin), Add netcf XML schemas
|
||||
and test data (Daniel Veillard), Add new net filesystem glusterfs
|
||||
(Harshavardhana), Add NIC and hostnet names to domain state XML
|
||||
(Mark McLoughlin), Add no_verify query parameter to ESX URIs
|
||||
(Matthias Bolte), Add SCM_RIGHTS support to QEMU monitor code
|
||||
(Mark McLoughlin), Add support for attaching network/bridge NICs
|
||||
in QEMU driver (Mark McLoughlin), add support for netcf XML import
|
||||
and export (Daniel Veillard), Add support for network device detach
|
||||
(Mark McLoughlin), Add support for physical memory access for QEmu
|
||||
(Nguyen Anh Quynh), Add support for VBox 3 and event callbacks on
|
||||
vbox (Pritesh Kothari), Add the monitor type to the domain state
|
||||
XML (Mark McLoughlin), Add virCapsGuestMachine structure (Mark
|
||||
McLoughlin), Add virsh commands for network interface management
|
||||
(Laine Stump), Allow autostart of libvirtd to be disabled with
|
||||
LIBVIRT_AUTOSTART=0 (Daniel P. Berrange), Allow leading dots in VMX
|
||||
config entry names (Matthias Bolte), Assign names to qemu NICs and
|
||||
network backends (Mark McLoughlin), Basic qemu NIC hotplug support
|
||||
(Mark McLoughlin), build: adjust aclocal's search patch to prefer
|
||||
gnulib's m4 files. (Jim Meyering), build: automatically rerun
|
||||
./bootstrap when needed (Jim Meyering), build: make autogen.sh use
|
||||
autoreconf -if (Jim Meyering), build: submodule machinery now works
|
||||
also when no tag is reachable (Jim Meyering), Canonicalize qemu
|
||||
machine types (Mark McLoughlin), Change code generator to give async
|
||||
event messages their own postfix (Daniel P. Berrange), Change the
|
||||
way client event loop watches are managed (Daniel P. Berrange),
|
||||
Decode incoming request header before invoking dispatch code
|
||||
(Daniel P. Berrange), Define an API for registering incoming message
|
||||
dispatch filters (Daniel P. Berrange), ESX driver accept VI API
|
||||
version 4.0 (Matthias Bolte), Fill in vCPU - pCPU current mapping,
|
||||
and vCPU cpuTime for QEMU (Daniel P. Berrange), generate ChangeLog
|
||||
from git logs into distribution tarball (Jim Meyering), Implement
|
||||
qemu dump capabilities (Paolo Bonzini), Implement schedular
|
||||
tunables API using cgroups (Daniel P. Berrange), Implement the
|
||||
new virinterface functions (Laine Stump), Make cgroups a little
|
||||
more efficient (Daniel P. Berrange), Make it easier to debug tests
|
||||
running programs (Daniel P. Berrange), Make qemuBuildHostNetStr()
|
||||
take tapfd as a string (Mark McLoughlin), Make QEMU cgroups use
|
||||
configurable (Daniel P. Berrange), Make qemuCmdFlags available in
|
||||
qemudDomainAttachDevice() (Mark McLoughlin), Move queuing of RPC
|
||||
replies into dispatch code (Daniel P. Berrange), Move vnet_hdr logic
|
||||
into qemudNetworkIfaceConnect() and export it (Mark McLoughlin),
|
||||
Netcf based interface driver implementation (Laine Stump), netcf
|
||||
XML validation and input and output tests (Daniel Veillard), Only
|
||||
probe qemu for machine types when binary changes (Mark McLoughlin),
|
||||
Place every QEMU guest in a private cgroup (Daniel P. Berrange),
|
||||
Probe for QEMU machine types (Mark McLoughlin), Probe QEMU directly
|
||||
for machine aliases if not found in capabilties (Mark McLoughlin),
|
||||
Public API for new virInterface functions (Laine Stump), python:
|
||||
Raise exceptions if virDomain*Stats fail. (Cole Robinson), Refactor
|
||||
cgroups to allow a group per driver to be managed directly (Daniel
|
||||
P. Berrange), Re-factor pci_add reply parsing and parse domain/bus
|
||||
numbers (Mark McLoughlin), Retain disk PCI address across libvirtd
|
||||
restarts (Mark McLoughlin), Retain PCI address from NIC attach
|
||||
(Mark McLoughlin), Run QEMU guests as an unprivileged user (Daniel
|
||||
P. Berrange), Separate code for encoding outgoing remote message
|
||||
headers (Daniel P. Berrange), Split generic RPC message dispatch
|
||||
code out from remote protocol API handlers (Daniel P. Berrange),
|
||||
Split out code for handling incoming method call messages
|
||||
(Daniel P. Berrange), storage: Break out actual raw cloning to
|
||||
separate function. (Cole Robinson), storage: cleanup: do away with
|
||||
'createFile' (Cole Robinson), storage: disk: Use capacity, not
|
||||
allocation, when creating volume. (Cole Robinson), storage: Don't
|
||||
try sparse detection if writing to block device. (Cole Robinson),
|
||||
storage: Implement 'CreateBlockFrom' helper. (Cole Robinson),
|
||||
storage: Implement CreateVolFrom for logical and disk backend. (Cole
|
||||
Robinson), storage: Move most of the FS creation functions to
|
||||
common backend. (Cole Robinson), storage: Refactor FS backend
|
||||
'create' function choosing. (Cole Robinson), Store the interface
|
||||
vlan number in the domain state (Mark McLoughlin), Support video
|
||||
element for QEMU guests (Daniel P. Berrange), Support video tag
|
||||
for defining VGA card properties (Daniel P. Berrange), Switch to
|
||||
using a unix socket for the qemu monitor (Mark McLoughlin), test:
|
||||
Generate net interface names when assigning XML. (Cole Robinson),
|
||||
test: Implement BlockStats and InterfaceStats (Cole Robinson),
|
||||
Use cgroups for block device whitelisting in QEMU guests (Daniel
|
||||
P. Berrange), Use enums for cgroup controller types / labels
|
||||
(Daniel P. Berrange), Use sendmsg() on QEMU monitor socket (Mark
|
||||
McLoughlin), Use virDomainChrTypeFromString() instead of open
|
||||
coding (Mark McLoughlin), Use virFileReadAll/virFileWriteStr for
|
||||
key cgroup read/write helpers (Daniel P. Berrange), virGetinterface
|
||||
matching of MAC and interface name (Laine Stump)</li>
|
||||
|
||||
<li>Cleanups: Fix configure checks from previous commits (Daniel
|
||||
P. Berrange), Avoid a warning if compiling without inotify
|
||||
(Daniel P. Berrange), Remove a stray semicolon (Daniel Veillard),
|
||||
Extend the ESX URL to habdle ports and GSX (Matthias Bolte), Fix
|
||||
escaping of 8-bit high characters (Daniel P. Berrange), , Remove
|
||||
ATTRIBUTE_UNUSED from flags to qemudDomainMigratePerform. (Chris
|
||||
Lalancette), Add a comment about setting errors after
|
||||
qemudStartVMDaemon(). (Chris Lalancette), Fix an erroneous
|
||||
debug error to KVM; it should read QEMU/KVM. (Chris Lalancette),
|
||||
Remove a stray semicolon in qemudDomainMigratePrepare2. (Chris
|
||||
Lalancette), Convert a few stray users of free() in libvirt.c
|
||||
to VIR_FREE(). (Chris Lalancette), Use virGetHostname instead
|
||||
of gethostname. (Chris Lalancette), Fix up a minor indentation
|
||||
issue with virDomainMigratePrepare. (Chris Lalancette), Fix up a
|
||||
silly typo in apibuild.py. (Chris Lalancette), Avoid warning when
|
||||
compiling without IFF_VNET_HDR (Maximilian Wilhelm), Capilize
|
||||
libvirt-client summary (Mark McLoughlin), Move ldconfig calls
|
||||
to libvirt-client %post/%postun (Mark McLoughlin), Convert NEWS
|
||||
to UTF-8 (Mark McLoughlin), Fix trailing whitespace in NEWS
|
||||
(Mark McLoughlin), No need to build require both python-devel
|
||||
and python (Mark McLoughlin), Remove executable perms from
|
||||
/etc/sysconfig/libvirtd (Mark McLoughlin), Use a %postun -p for
|
||||
one line scriptlet (Mark McLoughlin), Don't explicitly require
|
||||
libxml2 (Mark McLoughlin), Fix some unowned directories (Mark
|
||||
McLoughlin), Kill qemu BuildRequires (Mark McLoughlin), Enable
|
||||
netcf by default (Mark McLoughlin), Default to with_polkit
|
||||
(Mark McLoughlin), Make vbox support configurable (Mark
|
||||
McLoughlin), Build with --without-capng if capng is disabled
|
||||
(Mark McLoughlin), BuildRequires libcap-ng-devel not capng-devel
|
||||
(Mark McLoughlin), Drop curl host check when using ESX without
|
||||
check (Shahar Klein), Fix typo in xen capabilities code (Daniel
|
||||
P. Berrange), Add bare format string to printf-derivatives troubles
|
||||
(Laine Stump), Add phyp files to POTFILES, to make syntax-check
|
||||
happy. (Cole Robinson), avoid a make distcheck failure: distribute
|
||||
docs/schemas/interface.rng (Jim Meyering), avoid a make distcheck
|
||||
failure: distribute tests/interfaceschemadata/ (Jim Meyering), avoid
|
||||
a "make syntax-check" failure (Jim Meyering), build: do not emit
|
||||
a trailing blank line into VC'd file, NEWS (Jim Meyering), build:
|
||||
update from gnulib, for latest maint.mk (Jim Meyering), Clean up
|
||||
error handling in qemudDomainAttachNetDevice() (Mark McLoughlin),
|
||||
Cleanup qemu binary detection logic in qemudCapsInitGuest() (Mark
|
||||
McLoughlin), Commit newly generated docs, after changes from
|
||||
commit 2348cf. (Cole Robinson), Factor qemuBuildHostNetStr()
|
||||
out from qemuBuildCommandLine() (Mark McLoughlin), Factor
|
||||
qemuBuildNicStr() out from qemuBuildCommandLine() (Mark McLoughlin),
|
||||
Factor qemudMonitorSend() out of qemudMonitorCommandExtra() (Mark
|
||||
McLoughlin), Fix cgroup compile warnings (Daniel P. Berrange),
|
||||
Fix misc build problems due to new drivers (Daniel P. Berrange),
|
||||
Fix wierd build problems due to autopoint overwriting gnulib m4
|
||||
(Daniel P. Berrange), Makefile.cfg: Rename to... (Jim Meyering),
|
||||
make .gnulib a submodule (Jim Meyering), make "make syntax-check"
|
||||
consistent with "git diff --check" (Jim Meyering), Minor qemu
|
||||
monitor coding style fixes (Mark McLoughlin), Prepare to use
|
||||
maint.mk from gnulib (Jim Meyering), Refactor incoming message
|
||||
handling to prepare for data stream support (Daniel P. Berrange),
|
||||
Refactor message sending to allow code reuse for data streams
|
||||
(Daniel P. Berrange), remove all .cvsignore files (Jim Meyering),
|
||||
remove all trailing blank lines (Jim Meyering), Remove some unused
|
||||
variables and cut long lines (Daniel Veillard), Remove trailing
|
||||
blank lines (Daniel Veillard), Rename a bunch of internal methods
|
||||
to clarify their meaning (Daniel P. Berrange), Rename 'direction'
|
||||
to 'type' in remote_message_header (Daniel P. Berrange), Report
|
||||
the object name on lookup error (Daniel Veillard), Simplify remote
|
||||
driver error reporting (Daniel P. Berrange), skip some of gnulib's
|
||||
new rules (Jim Meyering), use automake-1.11's silent-rules
|
||||
option, when possible (Jim Meyering), use gnumakefile and
|
||||
maintainer-makefile modules from gnulib (Jim Meyering)</li>
|
||||
</ul>
|
||||
<h3>0.6.5: Jul 3 2009</h3>
|
||||
<ul>
|
||||
<li>New features: create storage columes on disk backend (Henrik Persson),
|
||||
@ -351,9 +840,9 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
<li>New features: CPU and scheduler support for LXC (Dan Smith), SDL display configuration (Daniel Berrange), domain lifecycle event support for QEmu and Xen with python bindings (Ben Guthro and Daniel Berrange), KVM/QEmu migration support (Rich Jones and Chris Lalancette), User Mode Linux driver (Daniel Berrange), API for node device enumeration using HAL and DeviceKit with python bindings (David Lively), </li>
|
||||
<li>Portability: RHEL build fixes, VPATH build (Guido Gunther), many MinGW related cleanups and fixes (Richard Jones), compilation without libvirtd (Richard Jones), Add a Windows icon (Richard Jones), sys/poll.h portability fixes (Daniel Berrange), gnulib and mingw cleanups (Jim Meyering), </li>
|
||||
<li>Documentation: virsh man page cleanups (Mark McLoughlin), doc for NIC model selection (Richard Jones), monitoring section, link to AMQP bindings, inew APIs, UML driver docs (Daniel Berrange), </li>
|
||||
<li>Bug fixes: Xen interfaces ordering (Jim Fehlig), startup timeout with multiple pty (Cole Robinson), segfault if QEmu without active virtual network (Cole Robinson), qemu small leak (Eduardo Habkost), index creation for more than 26 disks (Sanjay Rao and Chris Wright), virRealloc handling of 0 (Daniel Berrange), missing pointer initialization (Chris Lalancette), bus device index bug (Guido Günther), avoid crash in some error patch (Chris Lalancette), fix a problem in storage back-end (Chris Lalancette), minimum domain memory size check for Xen (Shigeki Sakamoto), switch off QEmu cache if device is shared (Charles Duffy), logical volume definition before scan bug (Chris Lalancette), a couple of memory leaks on QEmu vnc (Jim Meyering), lvs parsing fixes (Cole Robinson), </li>
|
||||
<li>Bug fixes: Xen interfaces ordering (Jim Fehlig), startup timeout with multiple pty (Cole Robinson), segfault if QEmu without active virtual network (Cole Robinson), qemu small leak (Eduardo Habkost), index creation for more than 26 disks (Sanjay Rao and Chris Wright), virRealloc handling of 0 (Daniel Berrange), missing pointer initialization (Chris Lalancette), bus device index bug (Guido Günther), avoid crash in some error patch (Chris Lalancette), fix a problem in storage back-end (Chris Lalancette), minimum domain memory size check for Xen (Shigeki Sakamoto), switch off QEmu cache if device is shared (Charles Duffy), logical volume definition before scan bug (Chris Lalancette), a couple of memory leaks on QEmu vnc (Jim Meyering), lvs parsing fixes (Cole Robinson),</li>
|
||||
<li>Improvements: LXC resources control and internal cgroup API (Dan Smith), virDomainCreateLinux renamed virDomainDefineXML, network driver modularization (Daniel Berrange), change the way domain and net are reported in errors (Jim Meyering), partition table scan on iSCSI (Chris Lalancette), qemudDiskDeviceName to handle normal disks (Guido Günther), qemudDomainBlockStats improvement (Guido Günther), scsi/virtio hotplug support for KVM (Guido Günther), USB hot addition in QEmu (Guido Günther), logical pool and storage backend XML dump improvement (Chris Lalancette), MAC addresses prefix per driver (Daniel Berrange), OpenVZ getVersion support (Daniel Berrange), hot removal of scsi/virtio disks for KVM (Guido Günther), test storage driver (Cole Robinson), iSCSI and disk storage driver improvement on path handling (Chris Lalancette), UUID and ID support for Xenner (Daniel Berrange), better logging when when executing commands (Cole Robinson), bridged network for OpenVZ (Daniel Berrange), OpenVZ config file params (Evgeniy Sokolov), allow to build drivers as libtool convenience libs (Daniel Berrange), fully versioned linker script for exported ABI (Daniel Berrange), Push URI probing down into drivers open (Daniel Berrange), move all stateful drivers into the daemon binary (Daniel Berrange), improve domain event with a detail field (Daniel Berrange), domain events for QEMU driver (Daniel Berrange), event unregister callback crash (David Lively), plug a few leaks (Daniel Berrange), internal APIs for handling node device XML config (David Lively), tweaks to node device implementation (Daniel Berrange), OpenVZ vCPUs values init (Evgeniy Sokolov)</li>
|
||||
<li>Cleanups: C99 initializers (Guido Gunther), test output (Cole Robinson), debug macro centralization (Cole Robinson), various error handling (Guido Günther), safewrite use cleanup (Jim Meyering), centralize error reporting logic (Cole Robinson), avoid printf warnings (Daniel Berrange), use arrays instead of list for internal APIs (Daniel Berrange), remove many format string warnings Jim Meyering), avoid syntax check warnings (Chris Lalancette), improve po-check and list generation (Jim Meyering), .gitignore generation and handling (Jim Meyering), use ARRAY_CARDINALITY (Jim Meyering), gnulib updates and switch to use netdb.h (Jim Meyering), drop usage of socket_errno (Jim Meyering), remove socketcompat.h (Jim Meyering), more tests (Jim Meyering), drop virStringList (Daniel Berrange), reformatting and isolation of the error APIs (Daniel Berrange), cleanup internal.h and move internal APIs in specific headers (Daniel Berrange), move domain events helpers into domain_events.c (Daniel Berrange), cleanup the way optional modules are compiled (Daniel Berrange), add new logging module, optional dlopen of drivers (Daniel Berrange), various new tests (Jim Meyering), cleanups when Xen is not configured in (Daniel Berrange), add some missing functions comments (Jim Meyering), </li>
|
||||
<li>Cleanups: C99 initializers (Guido Gunther), test output (Cole Robinson), debug macro centralization (Cole Robinson), various error handling (Guido Günther), safewrite use cleanup (Jim Meyering), centralize error reporting logic (Cole Robinson), avoid printf warnings (Daniel Berrange), use arrays instead of list for internal APIs (Daniel Berrange), remove many format string warnings Jim Meyering), avoid syntax check warnings (Chris Lalancette), improve po-check and list generation (Jim Meyering), .gitignore generation and handling (Jim Meyering), use ARRAY_CARDINALITY (Jim Meyering), gnulib updates and switch to use netdb.h (Jim Meyering), drop usage of socket_errno (Jim Meyering), remove socketcompat.h (Jim Meyering), more tests (Jim Meyering), drop virStringList (Daniel Berrange), reformatting and isolation of the error APIs (Daniel Berrange), cleanup internal.h and move internal APIs in specific headers (Daniel Berrange), move domain events helpers into domain_events.c (Daniel Berrange), cleanup the way optional modules are compiled (Daniel Berrange), add new logging module, optional dlopen of drivers (Daniel Berrange), various new tests (Jim Meyering), cleanups when Xen is not configured in (Daniel Berrange), add some missing functions comments (Jim Meyering),</li>
|
||||
</ul>
|
||||
<h3>0.4.6: Sep 23 2008</h3>
|
||||
<ul>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version="1.0">
|
||||
<xsl:output method="text" encoding="ISO-8859-1"/>
|
||||
<xsl:output method="text" encoding="UTF-8"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:text>
|
||||
@ -44,4 +44,3 @@
|
||||
<xsl:template match="p">
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
||||
|
@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
@ -3,7 +3,10 @@
|
||||
schemadir = $(pkgdatadir)/schemas
|
||||
schema_DATA = \
|
||||
domain.rng \
|
||||
interface.rng \
|
||||
network.rng \
|
||||
secret.rng \
|
||||
storageencryption.rng \
|
||||
storagepool.rng \
|
||||
storagevol.rng \
|
||||
nodedev.rng \
|
||||
|
@ -1,7 +1,6 @@
|
||||
<!-- A Relax NG schema for the libvirt node device XML format -->
|
||||
<!-- A Relax NG schema for the libvirt capabilities XML format -->
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
<!-- We handle only document defining a domain -->
|
||||
<start>
|
||||
<ref name='capabilities'/>
|
||||
</start>
|
||||
@ -80,6 +79,8 @@
|
||||
<oneOrMore>
|
||||
<element name='uri_transport'>
|
||||
<choice>
|
||||
<value>esx</value>
|
||||
<value>tcp</value>
|
||||
<value>xenmigr</value>
|
||||
</choice>
|
||||
</element>
|
||||
@ -196,6 +197,11 @@
|
||||
|
||||
<define name='machine'>
|
||||
<element name='machine'>
|
||||
<optional>
|
||||
<attribute name='canonical'>
|
||||
<text/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
@ -218,9 +224,9 @@
|
||||
<optional>
|
||||
<ref name='emulator'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<zeroOrMore>
|
||||
<ref name='machine'/>
|
||||
</optional>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
@ -273,15 +279,16 @@
|
||||
|
||||
<define name='archnames'>
|
||||
<choice>
|
||||
<value>arm</value>
|
||||
<value>i686</value>
|
||||
<value>x86_64</value>
|
||||
<value>ppc</value>
|
||||
<value>ppc64</value>
|
||||
<value>ia64</value>
|
||||
<value>s390</value>
|
||||
<value>mips</value>
|
||||
<value>mipsel</value>
|
||||
<value>ppc64</value>
|
||||
<value>ppc</value>
|
||||
<value>s390</value>
|
||||
<value>sparc</value>
|
||||
<value>x86_64</value>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
@ -299,4 +306,3 @@
|
||||
</define>
|
||||
|
||||
</grammar>
|
||||
|
||||
|
@ -4,6 +4,8 @@
|
||||
<start>
|
||||
<ref name="domain"/>
|
||||
</start>
|
||||
|
||||
<include href='storageencryption.rng'/>
|
||||
<!--
|
||||
We handle only document defining a domain
|
||||
-->
|
||||
@ -243,6 +245,15 @@
|
||||
<ref name="memoryKB"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="memoryBacking">
|
||||
<optional>
|
||||
<element name="hugepages">
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="vcpu">
|
||||
<optional>
|
||||
@ -336,6 +347,14 @@
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="serial">
|
||||
<ref name="diskSerial"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="encryption"/>
|
||||
</optional>
|
||||
</define>
|
||||
<!--
|
||||
A disk description can be either of type file or block
|
||||
@ -785,6 +804,59 @@
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
<!--
|
||||
A graphic description, currently in Xen only 2 types are supported:
|
||||
- sdl with optional display, xauth and fullscreen
|
||||
- vnc with a required port and optional listen IP address, password
|
||||
and keymap
|
||||
-->
|
||||
<define name="video">
|
||||
<element name="video">
|
||||
<optional>
|
||||
<element name="model">
|
||||
<attribute name="type">
|
||||
<choice>
|
||||
<value>vga</value>
|
||||
<value>cirrus</value>
|
||||
<value>vmvga</value>
|
||||
<value>xen</value>
|
||||
<value>vbox</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="vram">
|
||||
<ref name="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="heads">
|
||||
<ref name="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="acceleration">
|
||||
<optional>
|
||||
<attribute name="accel3d">
|
||||
<choice>
|
||||
<value>yes</value>
|
||||
<value>no</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="accel2d">
|
||||
<choice>
|
||||
<value>yes</value>
|
||||
<value>no</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
<!--
|
||||
When a domain terminates multiple policies can be applied depending
|
||||
on how it ended:
|
||||
@ -1032,6 +1104,7 @@
|
||||
<ref name="sound"/>
|
||||
<ref name="hostdev"/>
|
||||
<ref name="graphic"/>
|
||||
<ref name="video"/>
|
||||
<ref name="console"/>
|
||||
<ref name="parallel"/>
|
||||
<ref name="serial"/>
|
||||
@ -1101,6 +1174,11 @@
|
||||
<param name="pattern">[A-Za-z0-9_\.\+\-&:/]+</param>
|
||||
</data>
|
||||
</define>
|
||||
<define name="diskSerial">
|
||||
<data type="string">
|
||||
<param name="pattern">[A-Za-z0-9_\.\+\-]+</param>
|
||||
</data>
|
||||
</define>
|
||||
<define name="genericName">
|
||||
<data type="string">
|
||||
<param name="pattern">[a-zA-Z0-9_\+\-]+</param>
|
||||
|
385
docs/schemas/interface.rng
Normal file
385
docs/schemas/interface.rng
Normal file
@ -0,0 +1,385 @@
|
||||
<!-- A Relax NG schema for network interfaces -->
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
<start>
|
||||
<choice>
|
||||
<ref name="ethernet-interface"/>
|
||||
<ref name="bridge-interface"/>
|
||||
<ref name="bond-interface"/>
|
||||
<ref name="vlan-interface"/>
|
||||
</choice>
|
||||
</start>
|
||||
|
||||
<!--
|
||||
FIXME: How do we handle VLAN's ? Should they be their own interface
|
||||
or should we treat them as an option on the base interface ? For
|
||||
example, for vlan eth0.42, it would make sense to make that part of
|
||||
the definition of the eth0 interface.
|
||||
-->
|
||||
|
||||
<!--
|
||||
Ethernet adapter
|
||||
-->
|
||||
<define name="basic-ethernet-content">
|
||||
<attribute name="type">
|
||||
<value>ethernet</value>
|
||||
</attribute>
|
||||
<ref name="name-attr"/>
|
||||
<!-- If no MAC is given when the interface is defined, it is determined
|
||||
by using the device name.
|
||||
FIXME: What if device name and MAC don't specify the same NIC ? -->
|
||||
<optional>
|
||||
<element name="mac">
|
||||
<attribute name="address"><ref name="mac-addr"/></attribute>
|
||||
</element>
|
||||
</optional>
|
||||
<!-- FIXME: Allow (some) ethtool options -->
|
||||
</define>
|
||||
|
||||
<!-- Ethernet adapter without IP addressing, e.g. for a bridge -->
|
||||
<define name="bare-ethernet-interface">
|
||||
<element name="interface">
|
||||
<ref name="basic-ethernet-content"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="ethernet-interface">
|
||||
<element name="interface">
|
||||
<ref name="startmode"/>
|
||||
<ref name="basic-ethernet-content"/>
|
||||
<ref name="mtu"/>
|
||||
<ref name="interface-addressing"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!--
|
||||
VLAN's
|
||||
-->
|
||||
<define name="vlan-interface-common">
|
||||
<attribute name="type">
|
||||
<value>vlan</value>
|
||||
</attribute>
|
||||
<!-- The name attribute is only useful for reporting back and is always
|
||||
of the form DEVICE.VLAN
|
||||
-->
|
||||
<optional><ref name="name-attr"/></optional>
|
||||
</define>
|
||||
|
||||
<define name="vlan-device">
|
||||
<element name="vlan">
|
||||
<attribute name="tag"><ref name="vlan-id"/></attribute>
|
||||
<element name="interface">
|
||||
<attribute name="name"><ref name="device-name"/></attribute>
|
||||
</element>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="bare-vlan-interface">
|
||||
<element name="interface">
|
||||
<ref name="vlan-interface-common"/>
|
||||
<ref name="vlan-device"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="vlan-interface">
|
||||
<element name="interface">
|
||||
<ref name="vlan-interface-common"/>
|
||||
<ref name="startmode"/>
|
||||
<ref name="mtu"/>
|
||||
<ref name="interface-addressing"/>
|
||||
<ref name="vlan-device"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!--
|
||||
Bridges
|
||||
-->
|
||||
<define name="bridge-interface">
|
||||
<element name="interface">
|
||||
<attribute name="type">
|
||||
<value>bridge</value>
|
||||
</attribute>
|
||||
<ref name="name-attr"/>
|
||||
<ref name="startmode"/>
|
||||
<ref name="mtu"/>
|
||||
<ref name="interface-addressing"/>
|
||||
<element name="bridge">
|
||||
<optional>
|
||||
<attribute name="stp">
|
||||
<ref name="on-or-off"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<oneOrMore>
|
||||
<choice>
|
||||
<ref name="bare-ethernet-interface"/>
|
||||
<ref name="bare-vlan-interface"/>
|
||||
</choice>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</element>
|
||||
</define>
|
||||
<!-- Jim Fehlig would like support for other bridge attributes, in
|
||||
particular hellotime, forwarddelay, and maxage
|
||||
-->
|
||||
|
||||
<!--
|
||||
Bonds
|
||||
-->
|
||||
<define name="bond-interface">
|
||||
<element name="interface">
|
||||
<attribute name="type">
|
||||
<value>bond</value>
|
||||
</attribute>
|
||||
<ref name="name-attr"/>
|
||||
<ref name="startmode"/>
|
||||
<ref name="mtu"/>
|
||||
<ref name="interface-addressing"/>
|
||||
<element name="bond">
|
||||
<optional>
|
||||
<attribute name="mode">
|
||||
<choice>
|
||||
<value>balance-rr</value>
|
||||
<!-- The primary interface is the first interface child
|
||||
of the bond element -->
|
||||
<value>active-backup</value>
|
||||
<value>balance-xor</value>
|
||||
<value>broadcast</value>
|
||||
<value>802.3ad</value>
|
||||
<value>balance-tlb</value>
|
||||
<value>balance-alb</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
|
||||
<!-- FIXME: add more attributes
|
||||
|
||||
mode == 802.3ad
|
||||
ad_select
|
||||
lacp_rate
|
||||
xmit_hash_policy
|
||||
|
||||
mode == active-backup
|
||||
fail_over_mac
|
||||
num_grat_arp when mode == active-backup (since 3.3.0)
|
||||
num_unsol_na when mode == active-backup (ipv6, since 3.4.0)
|
||||
|
||||
mode == balance-xor
|
||||
xmit_hash_policy (since 2.6.3/3.2.2)
|
||||
-->
|
||||
|
||||
<choice>
|
||||
<element name="miimon">
|
||||
<!-- miimon frequency in ms -->
|
||||
<attribute name="freq"><ref name="uint"/></attribute>
|
||||
<optional>
|
||||
<attribute name="downdelay"><ref name="uint"/></attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="updelay"><ref name="uint"/></attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<!-- use_carrier -->
|
||||
<attribute name="carrier">
|
||||
<choice>
|
||||
<!-- use MII/ETHTOOL ioctl -->
|
||||
<value>ioctl</value>
|
||||
<!-- use netif_carrier_ok() -->
|
||||
<value>netif</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
<element name="arpmon">
|
||||
<attribute name="interval"><ref name="uint"/></attribute>
|
||||
<attribute name="target"><ref name="ipv4-addr"/></attribute>
|
||||
<optional>
|
||||
<attribute name="validate">
|
||||
<choice>
|
||||
<value>none</value>
|
||||
<value>active</value>
|
||||
<value>backup</value>
|
||||
<value>all</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</choice>
|
||||
<oneOrMore>
|
||||
<!-- The slave interfaces -->
|
||||
<ref name="bare-ethernet-interface"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Basic attributes for all interface types -->
|
||||
<define name="name-attr">
|
||||
<!-- The device name, like eth0 or br2 -->
|
||||
<attribute name="name"><ref name="device-name"/></attribute>
|
||||
</define>
|
||||
|
||||
<define name="mtu">
|
||||
<optional>
|
||||
<element name="mtu">
|
||||
<attribute name="size"><ref name="uint"/></attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name="startmode">
|
||||
<element name="start">
|
||||
<attribute name="mode">
|
||||
<choice>
|
||||
<value>onboot</value>
|
||||
<value>none</value>
|
||||
<value>hotplug</value>
|
||||
<!-- Jim Fehlig lists the following that SuSe supports:
|
||||
manual, ifplug, nfsroot -->
|
||||
</choice>
|
||||
</attribute>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!--
|
||||
Assignment of addresses to an interface, allowing for
|
||||
different protocols
|
||||
-->
|
||||
<define name="interface-addressing">
|
||||
<optional>
|
||||
<element name="protocol">
|
||||
<ref name="protocol-ipv4"/>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name="protocol-ipv4">
|
||||
<attribute name="family">
|
||||
<value>ipv4</value>
|
||||
</attribute>
|
||||
<choice>
|
||||
<element name="dhcp">
|
||||
<optional>
|
||||
<attribute name="peerdns">
|
||||
<ref name="yes-or-no"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
<!-- FIXME: This format should be good enough for IPv4 and IPv6, i.e.
|
||||
|
||||
ipaddr="192.168.0.5/24"
|
||||
ipaddr="2001:DB8:ABCD::1/64"
|
||||
|
||||
but will cause some backend pain
|
||||
-->
|
||||
<group>
|
||||
<element name="ip">
|
||||
<attribute name="address"><ref name="ipv4-addr"/></attribute>
|
||||
<optional>
|
||||
<attribute name="prefix"><ref name="ipv4-prefix"/></attribute>
|
||||
</optional>
|
||||
</element>
|
||||
<optional>
|
||||
<element name="route">
|
||||
<attribute name="gateway"><ref name="ipv4-addr"/></attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</group>
|
||||
</choice>
|
||||
</define>
|
||||
<!-- Jim Fehlig (<jfehlig@novell.com>) suggest the
|
||||
following additions to DHCP:
|
||||
|
||||
WRT dhcp element, would it make sense to consider hostname (hostname
|
||||
to send to server) and if to change the local hostname to the
|
||||
hostname delivered via dhcp? E.g. hostname="foo" (default
|
||||
`hostname`) sethostname
|
||||
|
||||
Also route:
|
||||
setrouting (default "yes")
|
||||
setdefaultroute (default "yes")
|
||||
|
||||
and NIS:
|
||||
nis (default "yes")
|
||||
setnisdomain (default "yes")
|
||||
|
||||
What about dhcpv6? A separate <dhcp6 /> element?
|
||||
-->
|
||||
|
||||
<!-- Jim Fehlig suggest adding static routing info
|
||||
|
||||
As for routing info, how about a separate route element:
|
||||
|
||||
<route gateway="192.168.0.1" /> # destination=default
|
||||
<route destination="default" gateway="192.168.0.1" />
|
||||
<route destination="10.0.0.0/8" gateway="192.168.0.2" />
|
||||
<route destination="2001:DB8:C::/64" gateway="2001:DB8:C::1" />
|
||||
<route destination="2001:DB8::/32"> # unrecheable route (loopback)
|
||||
|
||||
It would perhaps make sense to use iproute2 names, that is prefix
|
||||
instead of destination and nexthop instead of gateway.
|
||||
-->
|
||||
|
||||
<!-- Auxiliary definitions -->
|
||||
<define name="on-or-off">
|
||||
<choice>
|
||||
<value>on</value>
|
||||
<value>off</value>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name="yes-or-no">
|
||||
<choice>
|
||||
<value>yes</value>
|
||||
<value>no</value>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<!-- Type library -->
|
||||
|
||||
<define name='uint'>
|
||||
<data type='unsignedInt'>
|
||||
<param name="pattern">[0-9]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='device-name'>
|
||||
<data type='string'>
|
||||
<param name="pattern">[a-zA-Z0-9_\.\-:/]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='UUID'>
|
||||
<choice>
|
||||
<data type='string'>
|
||||
<param name="pattern">[a-fA-F0-9]{32}</param>
|
||||
</data>
|
||||
<data type='string'>
|
||||
<param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
|
||||
</data>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name='mac-addr'>
|
||||
<data type='string'>
|
||||
<param name="pattern">([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='ipv4-addr'>
|
||||
<data type='string'>
|
||||
<param name="pattern">([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9]</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='ipv4-prefix'>
|
||||
<data type='string'>
|
||||
<param name="pattern">[1-9]|[12][0-9]|3[0-2]</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='vlan-id'>
|
||||
<data type="unsignedInt">
|
||||
<param name="maxInclusive">4096</param>
|
||||
</data>
|
||||
</define>
|
||||
</grammar>
|
@ -1,14 +1,10 @@
|
||||
<!-- A Relax NG schema for the libvirt node device XML format -->
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
<!-- We handle only document defining a domain -->
|
||||
<start>
|
||||
<ref name='device'/>
|
||||
</start>
|
||||
|
||||
<!--
|
||||
We handle only document defining a domain
|
||||
-->
|
||||
<define name='device'>
|
||||
<element name="device">
|
||||
<!-- The name of the network, used to refer to it through the API
|
||||
|
74
docs/schemas/secret.rng
Normal file
74
docs/schemas/secret.rng
Normal file
@ -0,0 +1,74 @@
|
||||
<!-- A Relax NG schema for the libvirt secret properties XML format -->
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
|
||||
<start>
|
||||
<ref name='secret'/>
|
||||
</start>
|
||||
|
||||
<define name='secret'>
|
||||
<element name='secret'>
|
||||
<optional>
|
||||
<attribute name='ephemeral'>
|
||||
<choice>
|
||||
<value>yes</value>
|
||||
<value>no</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name='private'>
|
||||
<choice>
|
||||
<value>yes</value>
|
||||
<value>no</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name='uuid'>
|
||||
<ref name='UUID'/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='description'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='usage'>
|
||||
<choice>
|
||||
<ref name='usagevolume'>
|
||||
<!-- More choices later -->
|
||||
</choice>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='usagevolume'>
|
||||
<attribute name='type'>
|
||||
<value>volume</value>
|
||||
</attribute>
|
||||
<element name='volume'>
|
||||
<ref name='absFilePath'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="UUID">
|
||||
<choice>
|
||||
<data type="string">
|
||||
<param name="pattern">[a-fA-F0-9]{32}</param>
|
||||
</data>
|
||||
<data type="string">
|
||||
<param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
|
||||
</data>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name="absFilePath">
|
||||
<data type="string">
|
||||
<param name="pattern">/[a-zA-Z0-9_\.\+\-&/%]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
</grammar>
|
32
docs/schemas/storageencryption.rng
Normal file
32
docs/schemas/storageencryption.rng
Normal file
@ -0,0 +1,32 @@
|
||||
<!-- A Relax NG schema for the libvirt volume encryption XML format -->
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
|
||||
<define name='encryption'>
|
||||
<element name='encryption'>
|
||||
<attribute name='format'>
|
||||
<choice>
|
||||
<value>default</value>
|
||||
<value>qcow</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<zeroOrMore>
|
||||
<ref name='secret'/>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='secret'>
|
||||
<element name='secret'>
|
||||
<attribute name='type'>
|
||||
<choice>
|
||||
<value>passphrase</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<attribute name='uuid'>
|
||||
<ref name="UUID"/>
|
||||
</attribute>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
</grammar>
|
@ -1,7 +1,6 @@
|
||||
<!-- A Relax NG schema for the libvirt node device XML format -->
|
||||
<!-- A Relax NG schema for the libvirt storage pool XML format -->
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
<!-- We handle only document defining a domain -->
|
||||
<start>
|
||||
<ref name='pool'/>
|
||||
</start>
|
||||
|
@ -1,11 +1,12 @@
|
||||
<!-- A Relax NG schema for the libvirt node device XML format -->
|
||||
<!-- A Relax NG schema for the libvirt storage volume XML format -->
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
<!-- We handle only document defining a domain -->
|
||||
<start>
|
||||
<ref name='vol'/>
|
||||
</start>
|
||||
|
||||
<include href='storageencryption.rng'/>
|
||||
|
||||
|
||||
<define name='vol'>
|
||||
<element name='volume'>
|
||||
@ -74,6 +75,9 @@
|
||||
</optional>
|
||||
<ref name='format'/>
|
||||
<ref name='permissions'/>
|
||||
<optional>
|
||||
<ref name='encryption'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
@ -194,5 +198,15 @@
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name="UUID">
|
||||
<choice>
|
||||
<data type="string">
|
||||
<param name="pattern">[a-fA-F0-9]{32}</param>
|
||||
</data>
|
||||
<data type="string">
|
||||
<param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
|
||||
</data>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
</grammar>
|
||||
|
@ -135,12 +135,18 @@
|
||||
</li><li>
|
||||
<a href="formatstorage.html">Storage</a>
|
||||
<span>The storage pool and volume XML format</span>
|
||||
</li><li>
|
||||
<a href="formatstorageencryption.html">Storage Encryption</a>
|
||||
<span>Storage volume encryption XML format</span>
|
||||
</li><li>
|
||||
<a href="formatcaps.html">Capabilities</a>
|
||||
<span>The driver capabilities XML format</span>
|
||||
</li><li>
|
||||
<a href="formatnode.html">Node Devices</a>
|
||||
<span>The host device XML format</span>
|
||||
</li><li>
|
||||
<a href="formatsecret.html">Secrets</a>
|
||||
<span>The secret XML format</span>
|
||||
</li></ul></li><li>
|
||||
<a href="drivers.html">Drivers</a>
|
||||
<span>Hypervisor specific driver information</span>
|
||||
|
@ -98,6 +98,10 @@
|
||||
<a href="formatstorage.html">Storage</a>
|
||||
<span>The storage pool and volume XML format</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="formatstorageencryption.html">Storage Encryption</a>
|
||||
<span>Storage volume encryption XML format</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="formatcaps.html">Capabilities</a>
|
||||
<span>The driver capabilities XML format</span>
|
||||
@ -106,6 +110,10 @@
|
||||
<a href="formatnode.html">Node Devices</a>
|
||||
<span>The host device XML format</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="formatsecret.html">Secrets</a>
|
||||
<span>The secret XML format</span>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
@ -9,4 +9,3 @@
|
||||
</dhcp>
|
||||
</ip>
|
||||
</network>
|
||||
|
||||
|
@ -8,4 +8,3 @@
|
||||
</dhcp>
|
||||
</ip>
|
||||
</network>
|
||||
|
||||
|
@ -82,6 +82,18 @@ Running hypervisor: Xen 3.0.0
|
||||
|
||||
=back
|
||||
|
||||
=item B<cd> I<directory> optional
|
||||
|
||||
Will change current directory to I<directory>. The default directory
|
||||
for the B<cd> command is the home directory or, if there is no I<HOME>
|
||||
variable in the environment, the root directory.
|
||||
|
||||
This command is only available in interactive mode.
|
||||
|
||||
=item B<pwd>
|
||||
|
||||
Will print the current directory.
|
||||
|
||||
=item B<connect> I<URI> optional I<--readonly>
|
||||
|
||||
(Re)-Connect to the hypervisor. This is a build-in command after shell
|
||||
@ -128,7 +140,7 @@ we are currently connected to. This includes a section on the host
|
||||
capabilities in terms of CPU and features, and a set of description
|
||||
for each kind of guest which can be virtualized. For a more complete
|
||||
description see:
|
||||
L<http://libvirt.org/format.html#Capa1>
|
||||
L<http://libvirt.org/formatcaps.html>
|
||||
The XML also show the NUMA topology information if available.
|
||||
|
||||
=item B<list>
|
||||
@ -412,7 +424,7 @@ is not available the processes will provide an exit code of 1.
|
||||
The following commands manipulate devices associated to domains.
|
||||
The domain-id can be specified as an short integer, a name or a full UUID.
|
||||
To better understand the values allowed as options for the command
|
||||
reading the documentation at L<http://libvirt.org/format.html> on the
|
||||
reading the documentation at L<http://libvirt.org/formatdomain.html> on the
|
||||
format of the device sections to get the most accurate set of accepted values.
|
||||
|
||||
=over 4
|
||||
@ -464,7 +476,7 @@ if more than one are present on the domain.
|
||||
The following commands manipulate networks. Libvirt has the capability to
|
||||
define virtual networks which can then be used by domains and linked to
|
||||
actual network devices. For more detailed information about this feature
|
||||
see the documentation at L<http://libvirt.org/format.html#Net1> . A lot
|
||||
see the documentation at L<http://libvirt.org/formatnetwork.html> . A lot
|
||||
of the command for virtual networks are similar to the one used for domains,
|
||||
but the way to name a virtual network is either by its name or UUID.
|
||||
|
||||
@ -531,6 +543,49 @@ Convert a network name to network UUID.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SECRET COMMMANDS
|
||||
|
||||
The following commands manipulate "secrets" (e.g. passwords, passphrases and
|
||||
encryption keys). Libvirt can store secrets independently from their use, and
|
||||
other objects (e.g. volumes or domains) can refer to the secrets for encryption
|
||||
or possibly other uses. Secrets are identified using an UUID. See
|
||||
L<http://libvirt.org/formatsecret.html> for documentation of the XML format
|
||||
used to represent properties of secrets.
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<secret-define> I<file>
|
||||
|
||||
Create a secret with the properties specified in I<file>, with no associated
|
||||
secret value. If I<file> does not specify a UUID, choose one automatically.
|
||||
If I<file> specifies an UUID of an existing secret, replace its properties by
|
||||
properties defined in I<file>, without affecting the secret value.
|
||||
|
||||
=item B<secret-dumpxml> I<secret>
|
||||
|
||||
Output properties of I<secret> (specified by its UUID) as an XML dump to stdout.
|
||||
|
||||
=item B<secret-set-value> I<secret> I<base64>
|
||||
|
||||
Set the value associated with I<secret> (specified by its UUID) to the value
|
||||
Base64-encoded value I<base64>.
|
||||
|
||||
=item B<secret-get-value> I<secret>
|
||||
|
||||
Output the value associated with I<secret> (specified by its UUID) to stdout,
|
||||
encoded using Base64.
|
||||
|
||||
=item B<secret-undefine> I<secret>
|
||||
|
||||
Delete a I<secret> (specified by its UUID), including the associated value, if
|
||||
any.
|
||||
|
||||
=item B<secret-list>
|
||||
|
||||
Output a list of UUIDs of known secrets to stdout.
|
||||
|
||||
=back
|
||||
|
||||
=head1 ENVIRONMENT
|
||||
|
||||
The following environment variables can be set to alter the behaviour
|
||||
|
@ -1,6 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.exe
|
||||
.deps
|
||||
.libs
|
||||
event-test
|
@ -212,4 +212,3 @@ def main():
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
@ -1,5 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
hellolibvirt
|
||||
.deps
|
||||
.libs
|
@ -1,26 +0,0 @@
|
||||
*.la
|
||||
*.lo
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
alloca.h
|
||||
arpa_inet.h
|
||||
errno.h
|
||||
float.h
|
||||
netdb.h
|
||||
netinet_in.h
|
||||
poll.h
|
||||
stdbool.h
|
||||
stdint.h
|
||||
stdio.h
|
||||
stdlib.h
|
||||
string.h
|
||||
sys_ioctl.h
|
||||
sys_select.h
|
||||
sys_socket.h
|
||||
sys_stat.h
|
||||
sys_time.h
|
||||
time.h
|
||||
unistd.h
|
||||
wchar.h
|
26
gnulib/lib/.gitignore
vendored
26
gnulib/lib/.gitignore
vendored
@ -1,26 +0,0 @@
|
||||
*.la
|
||||
*.lo
|
||||
.deps
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
alloca.h
|
||||
arpa_inet.h
|
||||
errno.h
|
||||
float.h
|
||||
netdb.h
|
||||
netinet_in.h
|
||||
poll.h
|
||||
stdbool.h
|
||||
stdint.h
|
||||
stdio.h
|
||||
stdlib.h
|
||||
string.h
|
||||
sys_ioctl.h
|
||||
sys_select.h
|
||||
sys_socket.h
|
||||
sys_stat.h
|
||||
sys_time.h
|
||||
time.h
|
||||
unistd.h
|
||||
wchar.h
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user