mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-08-18 13:50:02 +03:00
Compare commits
498 Commits
Author | SHA1 | Date | |
---|---|---|---|
8536e697b6 | |||
6d910c9fd4 | |||
766b2250e1 | |||
a843f44c51 | |||
e807e4d9e9 | |||
9ec1a56923 | |||
f0817018b1 | |||
92ff72b52c | |||
e4073623a6 | |||
11b0ed46c5 | |||
d9ec9c6937 | |||
0722925986 | |||
89dd05cc6f | |||
8b8f4c5cbc | |||
55ae53d971 | |||
ecedb9cef3 | |||
10467f1c5b | |||
61243e0f57 | |||
b02c0455d1 | |||
e4c65831e3 | |||
dab6391f2d | |||
9a47149559 | |||
83a618f807 | |||
3ad8a273b5 | |||
b2f5ba21b8 | |||
461afc2200 | |||
45707d5631 | |||
4d3d0039e5 | |||
c61180dcd7 | |||
b7071653fa | |||
3b97f7db53 | |||
cb7593bd19 | |||
97230f6a35 | |||
667f669fdc | |||
60623a7ce0 | |||
aac6018a35 | |||
de4950b200 | |||
c29d092905 | |||
92d313ebe6 | |||
b75a469852 | |||
0ad4ece725 | |||
c86afc85ee | |||
df59fdce06 | |||
b68a19be0f | |||
2068f2f5a3 | |||
d2c77e06c7 | |||
b44af714d3 | |||
8fa62166c4 | |||
35625e5aa8 | |||
2dedb34a91 | |||
aa08419ca8 | |||
29ed758ae0 | |||
24a149cfa2 | |||
2567fac4a7 | |||
aad6873175 | |||
a3262d812b | |||
bdd6894713 | |||
27a63a76af | |||
4dfb7e8b2e | |||
7f39e2e5e5 | |||
e43d1ae0c6 | |||
4ebe4c108d | |||
b9739b4709 | |||
3aed672836 | |||
61796bdb4b | |||
e4818895c1 | |||
efa5832b0a | |||
d15b1a93fc | |||
d0aa10fdd6 | |||
b756b005ec | |||
10e3148f0a | |||
8343dcb893 | |||
260082321c | |||
41ed6eb327 | |||
aa2c97263d | |||
8bd1604cb7 | |||
a8cd24b346 | |||
8d13558ae6 | |||
0b7860ecdd | |||
8f1912c58d | |||
1ca2bd7912 | |||
1d1748b63e | |||
72652e9dbb | |||
644b41a94d | |||
0c85c384fa | |||
d15549aee0 | |||
0bfa7cbb29 | |||
7fad73685e | |||
9883bec50d | |||
aedf57db70 | |||
f9cbf065ad | |||
4837725f37 | |||
1f11e3bb61 | |||
adecc8fc9e | |||
895247b76b | |||
09fb8845a7 | |||
34d23b0b01 | |||
0231102863 | |||
6427091ffe | |||
737af2ea04 | |||
d217641314 | |||
a3ce3b1c71 | |||
14dfe93965 | |||
0fe3340ed9 | |||
07696eb347 | |||
014bb5cf7e | |||
9bceeca83c | |||
2e187bcbca | |||
66780313c2 | |||
372d5b3088 | |||
299aefebf2 | |||
a7868e0131 | |||
44811e8a2a | |||
8e2b396a7f | |||
da61daa2e6 | |||
c4c5e9dbbb | |||
ee197521c5 | |||
c56b4bcbf3 | |||
14480f699d | |||
761f5a52dc | |||
6a4da4657b | |||
4cbe86fcb8 | |||
7e8ad2036a | |||
f1b4ca52ff | |||
125980cb76 | |||
cf47347312 | |||
73619269ae | |||
81ba67b2b6 | |||
64b72210ad | |||
cedc15019e | |||
6b4b4eb29c | |||
bdd5094d8f | |||
a16ee2c83b | |||
4dce547640 | |||
3a53ab7913 | |||
c482439232 | |||
a3d1fb9cf3 | |||
0bb6f816e3 | |||
f6a5e8f785 | |||
c4602255c7 | |||
62e45f57b4 | |||
6d69d5eac3 | |||
9fec27be49 | |||
7d2b7ad520 | |||
f98b9e05d8 | |||
6efe591e66 | |||
e9c920ba67 | |||
98352a103b | |||
3557096d44 | |||
b92d7e761c | |||
f84c166013 | |||
fa7f51b813 | |||
1290b28f59 | |||
0437e75291 | |||
9a86716446 | |||
31135bff29 | |||
003f354917 | |||
b8b4fd4c7d | |||
bc68ae8060 | |||
3909c7d3ed | |||
bafd7389e4 | |||
d22a844b46 | |||
d2758fa13e | |||
1e31bfb055 | |||
dcfa920aff | |||
e60430be53 | |||
b0d49913d5 | |||
22c9bf6d8b | |||
caea9c00e3 | |||
7bc569dda9 | |||
a9aa76bad5 | |||
7faa50d1db | |||
41549b3888 | |||
6778ad0f07 | |||
dff2114795 | |||
08f87e3d03 | |||
c18ccff446 | |||
d26c3387df | |||
66929686c4 | |||
e69b20d616 | |||
4a5dfb847b | |||
42fea976df | |||
cf1b0f868b | |||
f92e9f599b | |||
f34ba729ff | |||
a119a98081 | |||
a6ef2e0055 | |||
67e7416119 | |||
3cb55cb51f | |||
896761e5c7 | |||
05436ab7ff | |||
d8637214a4 | |||
e2da806861 | |||
745c249a61 | |||
1c64dc76c1 | |||
3a8d93ab36 | |||
73da543e77 | |||
3801794908 | |||
4f4bfbc79e | |||
e96d88ff3d | |||
87e4ded54a | |||
a10aa7a96b | |||
3463c34e33 | |||
a9f8c8f5f1 | |||
3aaad2178c | |||
ecb2eb4554 | |||
bc18a91f91 | |||
a99e5ccba4 | |||
94d6177982 | |||
46d1324e47 | |||
ca9af16aa7 | |||
9322b2e861 | |||
e730de6fd8 | |||
8cc2bbe33c | |||
499189694a | |||
be33b189a5 | |||
eb0849f370 | |||
c2102c60ea | |||
555de859cc | |||
489fde7680 | |||
765bca14d1 | |||
2c22a68ce2 | |||
04b120e481 | |||
f03d3439cd | |||
b4f62abbf1 | |||
e15147c141 | |||
4e8f63fdaa | |||
aa7c4102aa | |||
339cc9d992 | |||
69d947eb80 | |||
39e49ad7c9 | |||
ad70b32414 | |||
5f0c720163 | |||
727d4fdc6e | |||
7523642c01 | |||
3b22f80f07 | |||
48dc345f2d | |||
6278bb191a | |||
e80f10064e | |||
c4985e9419 | |||
1b745219c7 | |||
d0eab955c2 | |||
a7acdde406 | |||
7420fec81b | |||
fb4ec82358 | |||
39e6ded8ae | |||
2b29698352 | |||
e52d74e536 | |||
20921cc284 | |||
e3672d9695 | |||
23a090ab92 | |||
a964a6dad6 | |||
554d82a200 | |||
839c6de58b | |||
1709e1dc88 | |||
5fb1e29c7e | |||
89408fd3a0 | |||
a888b22cf9 | |||
071be08079 | |||
3548e9aae8 | |||
d82071710e | |||
f61341173b | |||
84ef468ba8 | |||
2c7be88d15 | |||
788bedd904 | |||
0fc5b2fbc9 | |||
e428a69e6f | |||
437ac354fc | |||
25415eb104 | |||
61674cc17d | |||
458a673cb7 | |||
6d004d3f8a | |||
103ee5d4c2 | |||
45062390a6 | |||
763e33c373 | |||
a776fad370 | |||
0466ff28f2 | |||
ead04dcbe8 | |||
c790f6d25e | |||
ed493909f7 | |||
8dfbfe3145 | |||
5d99a309e6 | |||
e59dd65380 | |||
9a969b86a9 | |||
b751b46bc5 | |||
e676a699e8 | |||
4fbbbbd336 | |||
99ed5b4bee | |||
1fe181e36f | |||
735329b824 | |||
46d4a5e047 | |||
dd9b3fb594 | |||
2be79b1d5e | |||
19d1bf2562 | |||
0cd119e7b8 | |||
4dac0a1105 | |||
52e51d278e | |||
4d713eabf5 | |||
c7095a4b4c | |||
443698d2b2 | |||
406c05f2e7 | |||
c8070bf632 | |||
65316d7940 | |||
d6511cf6de | |||
9e58678a98 | |||
231dde6dc4 | |||
5b6c39f51f | |||
d052118dae | |||
37abbb387e | |||
17bfd657b7 | |||
890915054f | |||
e0a2770f67 | |||
fe54138020 | |||
6954d44e53 | |||
1c947488f6 | |||
c8ef64bdd7 | |||
8af87ea251 | |||
4275be68fb | |||
261c3a8fd0 | |||
12b6851d54 | |||
d6bd288da2 | |||
46971d5ed7 | |||
88053456f8 | |||
7386d78e6d | |||
55d0a68596 | |||
bd4edfeedd | |||
c7cbbfa43b | |||
d6eceb568f | |||
fbba4423e9 | |||
6c996bfc8f | |||
37e72aa542 | |||
83467de3ed | |||
ffafc252dd | |||
4015331b73 | |||
bc79ee38bb | |||
2ad1ca3f6c | |||
950c8b3916 | |||
06522492f9 | |||
2a37fb80eb | |||
c193699d34 | |||
0dbcac6598 | |||
34ac4c1fe7 | |||
b0119de82f | |||
83dfc25c02 | |||
ea5775bf8e | |||
ad17ffa034 | |||
7924fec593 | |||
8f06d6b103 | |||
0388d10a1f | |||
ca34b4d777 | |||
630cf4e22d | |||
cb48d5d71c | |||
33a7dc93d8 | |||
13a223253c | |||
e03a902735 | |||
8b5ab9fc90 | |||
043d702f02 | |||
922f5e6845 | |||
bd24695a23 | |||
b496213406 | |||
5af1e59d2d | |||
970c143497 | |||
7f3646c81d | |||
53f5386a2e | |||
0d575be45a | |||
0b05f6c26f | |||
f99b202f5b | |||
698d80a824 | |||
9fcbbd92bf | |||
0ff5cea597 | |||
d010b68962 | |||
337dce1e24 | |||
9604a4618a | |||
6a28a6f297 | |||
5614e868e1 | |||
b679ebe877 | |||
f1bd11bf87 | |||
ecd25f5262 | |||
830ba76c3e | |||
a485cae819 | |||
264ed02079 | |||
829b6420d8 | |||
6313259ada | |||
ca05a72db6 | |||
7c4bc3f92f | |||
9e8517c745 | |||
13d98d68fc | |||
b7e008d3dd | |||
6d4eb1985c | |||
ded70984f3 | |||
b5259e7e11 | |||
bd31fa766a | |||
c2fb8bfee3 | |||
0604e9efe0 | |||
e5fc0aad31 | |||
6add3883a6 | |||
34cd4f9076 | |||
7e58aaa7ae | |||
6ded3ebad5 | |||
f4cbc9370e | |||
4cea12bb69 | |||
e4c7e12300 | |||
53611889ff | |||
ed671f0e88 | |||
9e8c4fe304 | |||
7e6a06aeae | |||
0e459cbdfb | |||
36c612b21c | |||
e4471a7ac7 | |||
43b897c17a | |||
289d52c49e | |||
7125975d3c | |||
30bc0a10f3 | |||
1b3370b43f | |||
aff9fb9045 | |||
9c5470d292 | |||
8c0c10475d | |||
506629e619 | |||
2e59a005fd | |||
ccae0a4074 | |||
2ddb440cbb | |||
f998f82598 | |||
5257bac05a | |||
e2d2b7d577 | |||
762863d728 | |||
be2d2e06e2 | |||
63efdb85c1 | |||
bae8899a46 | |||
3130848a10 | |||
52037657dc | |||
a3d570c7b9 | |||
bd0af10802 | |||
7989276259 | |||
3693a02fff | |||
54f4ed6ba1 | |||
1c9968a2b1 | |||
c9319f315c | |||
34e5d2941c | |||
6f61232852 | |||
62db1b13f7 | |||
ca1a1b06d0 | |||
abb02bd18b | |||
73bc9c163c | |||
5abce0805b | |||
a2b2ada85c | |||
466f86052f | |||
af61834687 | |||
491b4eab14 | |||
4fb8dd5493 | |||
4a00119a0a | |||
f8a5192347 | |||
dd6b3318f3 | |||
c3e308c2fe | |||
792322f00d | |||
746f4373e7 | |||
d48717054c | |||
e8a4ea75a3 | |||
04a31e99fc | |||
e8c92c3b17 | |||
b6ee63d8bb | |||
c38d4d54c6 | |||
bff6ac7b63 | |||
b6dbbdc9fe | |||
055c2b25d2 | |||
773c8bac35 | |||
965c1bfee4 | |||
5305c55849 | |||
bc898df2c7 | |||
3527f16a94 | |||
ea960fb719 | |||
8492cd2084 | |||
2a23198886 | |||
3540f6af23 | |||
069252f0e6 | |||
b43401b915 | |||
a2232a5cc2 | |||
1d9a22b785 | |||
76944e8137 | |||
b9b9c8b020 | |||
4fc29fa9f4 | |||
f9d77feca9 | |||
1d7d2fae10 | |||
38b402ce13 | |||
fa4fc0321a | |||
a904a56c36 | |||
821b41f9f7 | |||
a429e221df | |||
fb23f4f4f4 | |||
0e9349a28d | |||
937c1e9e92 | |||
5acdb5761d | |||
d88d459d7b | |||
319b83fc28 | |||
c23ff311fc | |||
a9567e09ef | |||
d20d6b1bb0 | |||
431d40fa9c | |||
60c8b285a6 |
@ -1,7 +1,5 @@
|
||||
*.a
|
||||
*.o
|
||||
*.orig
|
||||
*.rej
|
||||
*~
|
||||
.git
|
||||
ABOUT-NLS
|
||||
@ -27,7 +25,6 @@ libvirt.pc
|
||||
libvirt.spec
|
||||
ltconfig
|
||||
ltmain.sh
|
||||
m4
|
||||
mingw32-libvirt.spec
|
||||
mkinstalldirs
|
||||
results.log
|
||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,7 +1,5 @@
|
||||
*.a
|
||||
*.o
|
||||
*.orig
|
||||
*.rej
|
||||
*~
|
||||
.git
|
||||
ABOUT-NLS
|
||||
@ -27,7 +25,6 @@ libvirt.pc
|
||||
libvirt.spec
|
||||
ltconfig
|
||||
ltmain.sh
|
||||
m4
|
||||
mingw32-libvirt.spec
|
||||
mkinstalldirs
|
||||
results.log
|
||||
|
277
.hgignore
Normal file
277
.hgignore
Normal file
@ -0,0 +1,277 @@
|
||||
syntax: glob
|
||||
*.a
|
||||
*.o
|
||||
*~
|
||||
.git
|
||||
ABOUT-NLS
|
||||
COPYING
|
||||
INSTALL
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
build-aux/compile
|
||||
build-aux/config.guess
|
||||
build-aux/config.rpath
|
||||
build-aux/config.sub
|
||||
build-aux/depcomp
|
||||
build-aux/install-sh
|
||||
build-aux/ltmain.sh
|
||||
build-aux/missing
|
||||
build-aux/mkinstalldirs
|
||||
build-aux/mktempd
|
||||
config.cache
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.rpath
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
coverage
|
||||
docs/.memdump
|
||||
docs/Makefile
|
||||
docs/Makefile.in
|
||||
docs/apibuild.pyc
|
||||
docs/devhelp/Makefile
|
||||
docs/devhelp/Makefile.in
|
||||
docs/devhelp/libvirt.devhelp
|
||||
docs/examples/.deps
|
||||
docs/examples/.libs
|
||||
docs/examples/.memdump
|
||||
docs/examples/Makefile
|
||||
docs/examples/Makefile.in
|
||||
docs/examples/info1
|
||||
docs/examples/python/Makefile
|
||||
docs/examples/python/Makefile.in
|
||||
docs/examples/suspend
|
||||
examples/domain-events/events-c/*.exe
|
||||
examples/domain-events/events-c/.deps
|
||||
examples/domain-events/events-c/.libs
|
||||
examples/domain-events/events-c/Makefile
|
||||
examples/domain-events/events-c/Makefile.in
|
||||
examples/domain-events/events-c/event-test
|
||||
gnulib/lib/*.la
|
||||
gnulib/lib/*.lo
|
||||
gnulib/lib/.deps
|
||||
gnulib/lib/.libs
|
||||
gnulib/lib/Makefile
|
||||
gnulib/lib/Makefile.in
|
||||
gnulib/lib/alloca.h
|
||||
gnulib/lib/arpa/inet.h
|
||||
gnulib/lib/arpa_inet.h
|
||||
gnulib/lib/errno.h
|
||||
gnulib/lib/float.h
|
||||
gnulib/lib/netdb.h
|
||||
gnulib/lib/netinet/in.h
|
||||
gnulib/lib/netinet_in.h
|
||||
gnulib/lib/poll.h
|
||||
gnulib/lib/stdbool.h
|
||||
gnulib/lib/stdint.h
|
||||
gnulib/lib/stdio.h
|
||||
gnulib/lib/stdlib.h
|
||||
gnulib/lib/string.h
|
||||
gnulib/lib/sys/select.h
|
||||
gnulib/lib/sys/socket.h
|
||||
gnulib/lib/sys/stat.h
|
||||
gnulib/lib/sys/time.h
|
||||
gnulib/lib/sys_ioctl.h
|
||||
gnulib/lib/sys_select.h
|
||||
gnulib/lib/sys_socket.h
|
||||
gnulib/lib/sys_stat.h
|
||||
gnulib/lib/sys_time.h
|
||||
gnulib/lib/time.h
|
||||
gnulib/lib/unistd.h
|
||||
gnulib/lib/wchar.h
|
||||
gnulib/tests/.deps
|
||||
gnulib/tests/.libs
|
||||
gnulib/tests/Makefile
|
||||
gnulib/tests/Makefile.in
|
||||
gnulib/tests/sys
|
||||
gnulib/tests/test-EOVERFLOW
|
||||
gnulib/tests/test-alloca-opt
|
||||
gnulib/tests/test-arpa_inet
|
||||
gnulib/tests/test-c-ctype
|
||||
gnulib/tests/test-errno
|
||||
gnulib/tests/test-fseeko
|
||||
gnulib/tests/test-getaddrinfo
|
||||
gnulib/tests/test-getdelim
|
||||
gnulib/tests/test-gethostname
|
||||
gnulib/tests/test-getline
|
||||
gnulib/tests/test-gettimeofday
|
||||
gnulib/tests/test-lseek
|
||||
gnulib/tests/test-lstat
|
||||
gnulib/tests/test-netdb
|
||||
gnulib/tests/test-netinet_in
|
||||
gnulib/tests/test-perror
|
||||
gnulib/tests/test-poll
|
||||
gnulib/tests/test-random_r
|
||||
gnulib/tests/test-snprintf
|
||||
gnulib/tests/test-sockets
|
||||
gnulib/tests/test-stdbool
|
||||
gnulib/tests/test-stdint
|
||||
gnulib/tests/test-stdio
|
||||
gnulib/tests/test-stdlib
|
||||
gnulib/tests/test-strerror
|
||||
gnulib/tests/test-string
|
||||
gnulib/tests/test-sys_select
|
||||
gnulib/tests/test-sys_socket
|
||||
gnulib/tests/test-sys_stat
|
||||
gnulib/tests/test-sys_time
|
||||
gnulib/tests/test-time
|
||||
gnulib/tests/test-unistd
|
||||
gnulib/tests/test-vasnprintf
|
||||
gnulib/tests/test-vasprintf
|
||||
gnulib/tests/test-wchar
|
||||
include/Makefile
|
||||
include/Makefile.in
|
||||
include/libvirt/Makefile
|
||||
include/libvirt/Makefile.in
|
||||
libtool
|
||||
libvirt-*.tar.gz
|
||||
libvirt.pc
|
||||
libvirt.spec
|
||||
ltconfig
|
||||
ltmain.sh
|
||||
m4/Makefile
|
||||
m4/Makefile.in
|
||||
m4/acinclude.m4
|
||||
m4/aclocal.m4
|
||||
m4/codeset.m4
|
||||
m4/gettext.m4
|
||||
m4/glibc21.m4
|
||||
m4/iconv.m4
|
||||
m4/intdiv0.m4
|
||||
m4/intmax.m4
|
||||
m4/inttypes-pri.m4
|
||||
m4/inttypes.m4
|
||||
m4/inttypes_h.m4
|
||||
m4/isc-posix.m4
|
||||
m4/lcmessage.m4
|
||||
m4/lib-ld.m4
|
||||
m4/lib-link.m4
|
||||
m4/lib-prefix.m4
|
||||
m4/libtool.m4
|
||||
m4/longdouble.m4
|
||||
m4/longlong.m4
|
||||
m4/ltoptions.m4
|
||||
m4/ltsugar.m4
|
||||
m4/ltversion.m4
|
||||
m4/lt~obsolete.m4
|
||||
m4/nls.m4
|
||||
m4/po.m4
|
||||
m4/printf-posix.m4
|
||||
m4/progtest.m4
|
||||
m4/signed.m4
|
||||
m4/size_max.m4
|
||||
m4/stdint_h.m4
|
||||
m4/uintmax_t.m4
|
||||
m4/ulonglong.m4
|
||||
m4/wchar_t.m4
|
||||
m4/wint_t.m4
|
||||
m4/xsize.m4
|
||||
mingw32-libvirt.spec
|
||||
mkinstalldirs
|
||||
po/*.gmo
|
||||
po/Makefile
|
||||
po/Makefile.in
|
||||
po/Makefile.in.in
|
||||
po/Makevars.template
|
||||
po/POTFILES
|
||||
po/Rules-quot
|
||||
po/boldquot.sed
|
||||
po/en@boldquot.header
|
||||
po/en@quot.header
|
||||
po/insert-header.sin
|
||||
po/quot.sed
|
||||
po/remove-potcdate.sed
|
||||
po/remove-potcdate.sin
|
||||
po/stamp-po
|
||||
proxy/.deps
|
||||
proxy/.libs
|
||||
proxy/Makefile
|
||||
proxy/Makefile.in
|
||||
proxy/libvirt_proxy
|
||||
python/*.la
|
||||
python/*.lo
|
||||
python/*.loT
|
||||
python/*.pyc
|
||||
python/.deps
|
||||
python/.libs
|
||||
python/Makefile
|
||||
python/Makefile.in
|
||||
python/gen_prog
|
||||
python/generated.stamp
|
||||
python/libvirt-export.c
|
||||
python/libvirt-py.[ch]
|
||||
python/libvirt.py
|
||||
python/libvirtclass.py
|
||||
python/libvirtclass.txt
|
||||
python/tests/Makefile
|
||||
python/tests/Makefile.in
|
||||
qemud/*.gcda
|
||||
qemud/*.gcno
|
||||
qemud/*.la
|
||||
qemud/*.lo
|
||||
qemud/.deps
|
||||
qemud/.libs
|
||||
qemud/Makefile
|
||||
qemud/Makefile.in
|
||||
qemud/libvirt_qemud
|
||||
qemud/libvirtd
|
||||
qemud/libvirtd.init
|
||||
qemud/libvirtd.logrotate
|
||||
results.log
|
||||
src/*.cov
|
||||
src/*.exe
|
||||
src/*.gcda
|
||||
src/*.gcno
|
||||
src/*.gcov
|
||||
src/*.la
|
||||
src/*.lo
|
||||
src/*.loT
|
||||
src/.deps
|
||||
src/.libs
|
||||
src/Makefile
|
||||
src/Makefile.in
|
||||
src/libvirt.syms
|
||||
src/libvirt_lxc
|
||||
src/libvirt_parthelper
|
||||
src/virsh
|
||||
src/virsh-net-edit.c
|
||||
src/virsh-pool-edit.c
|
||||
stamp-h
|
||||
stamp-h.in
|
||||
stamp-h1
|
||||
tests/*.exe
|
||||
tests/*.gcda
|
||||
tests/*.gcno
|
||||
tests/.deps
|
||||
tests/.libs
|
||||
tests/Makefile
|
||||
tests/Makefile.in
|
||||
tests/confdata/Makefile
|
||||
tests/confdata/Makefile.in
|
||||
tests/conftest
|
||||
tests/nodedevxml2xmltest
|
||||
tests/nodeinfotest
|
||||
tests/qemuxml2argvtest
|
||||
tests/qemuxml2xmltest
|
||||
tests/qparamtest
|
||||
tests/reconnect
|
||||
tests/sexpr2xmldata/Makefile
|
||||
tests/sexpr2xmldata/Makefile.in
|
||||
tests/sexpr2xmltest
|
||||
tests/statstest
|
||||
tests/virshtest
|
||||
tests/xencapsdata/Makefile
|
||||
tests/xencapsdata/Makefile.in
|
||||
tests/xencapstest
|
||||
tests/xmconfigdata/Makefile
|
||||
tests/xmconfigdata/Makefile.in
|
||||
tests/xmconfigtest
|
||||
tests/xml2sexprdata/Makefile
|
||||
tests/xml2sexprdata/Makefile.in
|
||||
tests/xml2sexprtest
|
||||
update.log
|
@ -1,4 +1,5 @@
|
||||
^src/util\.c$
|
||||
^src/xend_internal\.c$
|
||||
^src/util-lib\.c$
|
||||
^qemud/qemud.c$
|
||||
^gnulib/
|
||||
|
1
.x-sc_m4_quote_check
Normal file
1
.x-sc_m4_quote_check
Normal file
@ -0,0 +1 @@
|
||||
^gnulib/m4/intl\.m4$
|
1
.x-sc_prohibit_HAVE_MBRTOWC
Normal file
1
.x-sc_prohibit_HAVE_MBRTOWC
Normal file
@ -0,0 +1 @@
|
||||
gnulib/.*
|
8
.x-sc_prohibit_VIR_ERR_NO_MEMORY
Normal file
8
.x-sc_prohibit_VIR_ERR_NO_MEMORY
Normal file
@ -0,0 +1,8 @@
|
||||
ChangeLog
|
||||
docs/devhelp/libvirt-virterror.html
|
||||
docs/html/libvirt-virterror.html
|
||||
docs/libvirt-api.xml
|
||||
docs/libvirt-refs.xml
|
||||
include/libvirt/virterror.h
|
||||
qemud/remote.c
|
||||
src/virterror.c
|
3
.x-sc_prohibit_asprintf
Normal file
3
.x-sc_prohibit_asprintf
Normal file
@ -0,0 +1,3 @@
|
||||
^gnulib/
|
||||
^po/
|
||||
ChangeLog
|
3
.x-sc_prohibit_gethostby
Normal file
3
.x-sc_prohibit_gethostby
Normal file
@ -0,0 +1,3 @@
|
||||
gnulib/lib/getaddrinfo.c
|
||||
gnulib/m4/
|
||||
src/xend_internal.c
|
10
.x-sc_prohibit_nonreentrant
Normal file
10
.x-sc_prohibit_nonreentrant
Normal file
@ -0,0 +1,10 @@
|
||||
^gnulib/
|
||||
^po/
|
||||
ChangeLog
|
||||
^Makefile*
|
||||
^docs/
|
||||
^tests/
|
||||
^src/virsh\.c
|
||||
^src/console\.c
|
||||
^src/virterror\.c
|
||||
^build-aux/
|
2
.x-sc_require_config_h_first
Normal file
2
.x-sc_require_config_h_first
Normal file
@ -0,0 +1,2 @@
|
||||
^docs/examples/info1\.c$
|
||||
^docs/examples/suspend\.c$
|
23
AUTHORS
23
AUTHORS
@ -20,7 +20,8 @@ The primary maintainers and people with commit access rights:
|
||||
Dave Leskovec <dlesko@linux.vnet.ibm.com>
|
||||
Cole Robinson <crobinso@redhat.com>
|
||||
Dan Smith <danms@us.ibm.com>
|
||||
Guido Guenther <agx@sigxcpu.org>
|
||||
Guido Günther <agx@sigxcpu.org>
|
||||
John Levon <john.levon@sun.com>
|
||||
|
||||
Patches have also been contributed by:
|
||||
|
||||
@ -47,18 +48,32 @@ Patches have also been contributed by:
|
||||
Stefan de Konink <dekonink@kinkrsoftware.nl>
|
||||
Kaitlin Rupert <kaitlin@linux.vnet.ibm.com>
|
||||
Evgeniy Sokolov <evg@openvz.org>
|
||||
John Levon <john.levon@sun.com>
|
||||
David Lively <dlively@virtualiron.com>
|
||||
Charles Duffy <Charles_Duffy@messageone.com>
|
||||
Nguyen Anh Quynh <aquynh@gmail.com>
|
||||
James Morris <jmorris@namei.org>
|
||||
Chris Wrigh <chrisw@redhat.com>
|
||||
Ben Guthro <bguthro@virtualiron.com>
|
||||
Ben Guthro <ben.guthro@gmail.com>
|
||||
Shigeki Sakamoto <fj0588di@aa.jp.fujitsu.com>
|
||||
|
||||
Gerd von Egidy <lists@egidy.de>
|
||||
Itamar Heim <iheim@redhat.com>
|
||||
Dave Allan <dallan@redhat.com>
|
||||
Markus Armbruster <armbru@redhat.com>
|
||||
Ryota Ozaki <ozaki.ryota@gmail.com>
|
||||
James Morris <jmorris@namei.org>
|
||||
Daniel J Walsh <dwalsh@redhat.com>
|
||||
Maximilian Wilhelm <max@rfc2324.org>
|
||||
Ryota Ozaki <ozaki.ryota@gmail.com>
|
||||
Pritesh Kothari <Pritesh.Kothari@Sun.COM>
|
||||
Amit Shah <amit.shah@redhat.com>
|
||||
Florian Vichot <florian.vichot@diateam.net>
|
||||
Takahashi Tomohiro <takatom@jp.fujitsu.com>
|
||||
|
||||
[....send patches to get your name here....]
|
||||
|
||||
The libvirt Logo was designed by Diana Fong
|
||||
|
||||
-- End
|
||||
;; Local Variables:
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
|
72
HACKING
72
HACKING
@ -91,6 +91,62 @@ Usually they're in macro definitions or strings, and should be converted
|
||||
anyhow.
|
||||
|
||||
|
||||
C types
|
||||
=======
|
||||
Use the right type.
|
||||
|
||||
Scalars
|
||||
-------
|
||||
If you're using "int" or "long", odds are good that there's a better type.
|
||||
If a variable is counting something, be sure to declare it with an
|
||||
unsigned type.
|
||||
If it's memory-size-related, use size_t (use ssize_t only if required).
|
||||
If it's file-size related, use uintmax_t, or maybe off_t.
|
||||
If it's file-offset related (i.e., signed), use off_t.
|
||||
If it's just counting small numbers use "unsigned int";
|
||||
(on all but oddball embedded systems, you can assume that that
|
||||
type is at least four bytes wide).
|
||||
If a variable has boolean semantics, give it the "bool" type
|
||||
and use the corresponding "true" and "false" macros. It's ok
|
||||
to include <stdbool.h>, since libvirt's use of gnulib ensures
|
||||
that it exists and is usable.
|
||||
In the unusual event that you require a specific width, use a
|
||||
standard type like int32_t, uint32_t, uint64_t, etc.
|
||||
|
||||
While using "bool" is good for readability, it comes with minor caveats:
|
||||
- Don't use "bool" in places where the type size must be constant across
|
||||
all systems, like public interfaces and on-the-wire protocols. Note
|
||||
that it would be possible (albeit wasteful) to use "bool" in libvirt's
|
||||
logical wire protocol, since XDR maps that to its lower-level bool_t
|
||||
type, which *is* fixed-size.
|
||||
- Don't compare a bool variable against the literal, "true",
|
||||
since a value with a logical non-false value need not be "1".
|
||||
I.e., don't write "if (seen == true) ...". Rather, write "if (seen)...".
|
||||
|
||||
Of course, take all of the above with a grain of salt. If you're about
|
||||
to use some system interface that requires a type like size_t, pid_t or
|
||||
off_t, use matching types for any corresponding variables.
|
||||
|
||||
Also, if you try to use e.g., "unsigned int" as a type, and that
|
||||
conflicts with the signedness of a related variable, sometimes
|
||||
it's best just to use the *wrong* type, if "pulling the thread"
|
||||
and fixing all related variables would be too invasive.
|
||||
|
||||
Finally, while using descriptive types is important, be careful not to
|
||||
go overboard. If whatever you're doing causes warnings, or requires
|
||||
casts, then reconsider or ask for help.
|
||||
|
||||
Pointers
|
||||
--------
|
||||
Ensure that all of your pointers are "const-correct".
|
||||
Unless a pointer is used to modify the pointed-to storage,
|
||||
give it the "const" attribute. That way, the reader knows
|
||||
up-front that this is a read-only pointer. Perhaps more
|
||||
importantly, if we're diligent about this, when you see a non-const
|
||||
pointer, you're guaranteed that it is used to modify the storage
|
||||
it points to, or it is aliased to another pointer that is.
|
||||
|
||||
|
||||
Low level memory management
|
||||
===========================
|
||||
|
||||
@ -247,6 +303,22 @@ are some special reasons why you cannot include these files
|
||||
explicitly.
|
||||
|
||||
|
||||
Printf-style functions
|
||||
======================
|
||||
|
||||
Whenever you add a new printf-style function, i.e., one with a format
|
||||
string argument and following "..." in its prototype, be sure to use
|
||||
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);
|
||||
|
||||
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
|
||||
of arguments.
|
||||
|
||||
|
||||
|
||||
Libvirt commiters guidelines
|
||||
============================
|
||||
|
@ -4,7 +4,7 @@ LCOV = lcov
|
||||
GENHTML = genhtml
|
||||
|
||||
SUBDIRS = gnulib/lib include src qemud proxy docs gnulib/tests \
|
||||
python tests po examples/domain-events/events-c
|
||||
python tests po examples/domain-events/events-c examples/hellolibvirt
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4 -I gnulib/m4
|
||||
|
||||
@ -14,8 +14,11 @@ EXTRA_DIST = \
|
||||
libvirt.pc libvirt.pc.in \
|
||||
$(man_MANS) autobuild.sh \
|
||||
.x-sc_avoid_if_before_free \
|
||||
.x-sc_require_config_h_first \
|
||||
.x-sc_prohibit_strcmp \
|
||||
.x-sc_require_config_h \
|
||||
.x-sc_prohibit_nonreentrant \
|
||||
Makefile.nonreentrant \
|
||||
autogen.sh
|
||||
|
||||
man_MANS = virsh.1
|
||||
|
19
Makefile.cfg
19
Makefile.cfg
@ -1,5 +1,5 @@
|
||||
# Customize Makefile.maint. -*- makefile -*-
|
||||
# Copyright (C) 2003-2008 Free Software Foundation, Inc.
|
||||
# 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
|
||||
@ -26,32 +26,37 @@ url_dir_list = \
|
||||
|
||||
# Tests not to run as part of "make distcheck".
|
||||
local-checks-to-skip = \
|
||||
makefile_path_separator_check \
|
||||
changelog-check \
|
||||
check-AUTHORS \
|
||||
makefile-check \
|
||||
sc_tight_scope \
|
||||
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 \
|
||||
patch-check \
|
||||
check-AUTHORS \
|
||||
changelog-check
|
||||
sc_useless_cpp_parens
|
||||
|
||||
useless_free_options = \
|
||||
--name=sexpr_free \
|
||||
--name=VIR_FREE \
|
||||
--name=xmlFree \
|
||||
--name=xmlXPathFreeContext \
|
||||
--name=xmlXPathFreeObject
|
||||
|
664
Makefile.maint
664
Makefile.maint
@ -8,11 +8,13 @@ gzip_rsyncable := \
|
||||
$(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
|
||||
GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
|
||||
|
||||
VC_LIST = build-aux/vc-list-files
|
||||
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
|
||||
@ -23,12 +25,15 @@ syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
|
||||
.PHONY: $(syntax-check-rules)
|
||||
|
||||
local-checks-available = \
|
||||
po-check copyright-check m4-check author_mark_check \
|
||||
patch-check strftime-check $(syntax-check-rules) \
|
||||
makefile_path_separator_check \
|
||||
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)
|
||||
@ -43,6 +48,21 @@ syntax-check: $(local-check)
|
||||
# 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) \
|
||||
@ -62,41 +82,59 @@ sc_avoid_write:
|
||||
fi
|
||||
|
||||
sc_cast_of_argument_to_free:
|
||||
@grep -nE '\<free \(\(' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): don'\''t cast free argument' 1>&2; \
|
||||
exit 1; } || :
|
||||
@re='\<free *\( *\(' msg='don'\''t cast free argument' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_cast_of_x_alloc_return_value:
|
||||
@grep -nE '\*\) *x(m|c|re)alloc\>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): don'\''t cast x*alloc return value' 1>&2; \
|
||||
exit 1; } || :
|
||||
@re='\*\) *x(m|c|re)alloc\>' \
|
||||
msg='don'\''t cast x*alloc return value' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_cast_of_alloca_return_value:
|
||||
@grep -nE '\*\) *alloca\>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): don'\''t cast alloca return value' 1>&2; \
|
||||
exit 1; } || :
|
||||
@re='\*\) *alloca\>' msg='don'\''t cast alloca return value' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_space_tab:
|
||||
@grep -n '[ ] ' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \
|
||||
1>&2; exit 1; } || :
|
||||
@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:
|
||||
@grep -nE '\<([fs]?scanf|ato([filq]|ll))\>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): do not use *scan''f, ato''f, ato''i, ato''l, ato''ll, ato''q, or ss''canf' \
|
||||
1>&2; exit 1; } || :
|
||||
@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 '! *str''n?cmp *\(|\<str''n?cmp *\([^)]+\) *==' \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): use STREQ in place of the above uses of str''cmp' \
|
||||
@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:
|
||||
@ -106,12 +144,12 @@ sc_error_exit_success:
|
||||
exit 1; } || :
|
||||
|
||||
sc_file_system:
|
||||
@grep -ni 'file''system' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found use of "file''system";' \
|
||||
'rewrite to use "file system"' 1>&2; \
|
||||
exit 1; } || :
|
||||
@re=file''system ignore_case=1 \
|
||||
msg='found use of "file''system"; spell it "file system"' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_no_have_config_h:
|
||||
# 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; } || :
|
||||
@ -127,6 +165,25 @@ sc_require_config_h:
|
||||
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.
|
||||
@ -158,6 +215,36 @@ sc_prohibit_quotearg_without_use:
|
||||
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)
|
||||
@ -169,10 +256,9 @@ sc_prohibit_ctype_h:
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
sc_obsolete_symbols:
|
||||
@grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY' \
|
||||
1>&2; exit 1; } || :
|
||||
@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
|
||||
|
||||
@ -186,121 +272,15 @@ sc_changelog:
|
||||
{ echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Ensure that dd's definition of LONGEST_SYMBOL stays in sync
|
||||
# with the strings from the two affected variables.
|
||||
dd_c = $(srcdir)/src/dd.c
|
||||
sc_dd_max_sym_length:
|
||||
ifneq ($(wildcard $(dd_c)),)
|
||||
@len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c);\
|
||||
sed -n '/flags\[\] =$$/,/^};/p' $(dd_c) ) \
|
||||
|sed -n '/"/s/^[^"]*"\([^"]*\)".*/\1/p' \
|
||||
| wc --max-line-length); \
|
||||
max=$$(sed -n '/^#define LONGEST_SYMBOL /s///p' $(dd_c) \
|
||||
|tr -d '"' | wc --max-line-length); \
|
||||
if test "$$len" = "$$max"; then :; else \
|
||||
echo 'dd.c: LONGEST_SYMBOL is not longest' 1>&2; \
|
||||
exit 1; \
|
||||
fi
|
||||
endif
|
||||
|
||||
# Many m4 macros names once began with `jm_'.
|
||||
# On 2004-04-13, they were all changed to start with gl_ instead.
|
||||
# Make sure that none are inadvertently reintroduced.
|
||||
sc_prohibit_jm_in_m4:
|
||||
@grep -nE 'jm_[A-Z]' \
|
||||
$$($(VC_LIST) m4 |grep '\.m4$$'; echo /dev/null) && \
|
||||
{ echo '$(ME): do not use jm_ in m4 macro names' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
sc_root_tests:
|
||||
@if test -d tests \
|
||||
&& grep check-root tests/Makefile.am>/dev/null 2>&1; then \
|
||||
t1=sc-root.expected; t2=sc-root.actual; \
|
||||
grep -nl '^require_root_$$' \
|
||||
$$($(VC_LIST) tests) |sed s,tests,., |sort > $$t1; \
|
||||
sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
|
||||
$(srcdir)/tests/Makefile.am |sort > $$t2; \
|
||||
diff -u $$t1 $$t2 || diff=1; \
|
||||
rm -f $$t1 $$t2; \
|
||||
test "$$diff" \
|
||||
&& { echo 'tests/Makefile.am: missing check-root action'>&2; \
|
||||
exit 1; } || :; \
|
||||
fi
|
||||
|
||||
headers_with_interesting_macro_defs = \
|
||||
exit.h \
|
||||
fcntl_.h \
|
||||
fnmatch_.h \
|
||||
intprops.h \
|
||||
inttypes_.h \
|
||||
lchown.h \
|
||||
openat.h \
|
||||
stat-macros.h \
|
||||
stdint_.h
|
||||
|
||||
# Create a list of regular expressions matching the names
|
||||
# of macros that are guaranteed by parts of gnulib to be defined.
|
||||
.re-defmac:
|
||||
@(cd $(srcdir)/lib; \
|
||||
for f in $(headers_with_interesting_macro_defs); do \
|
||||
test -f $$f && \
|
||||
sed -n '/^# *define \([^_ (][^ (]*\)[ (].*/s//\1/p' $$f; \
|
||||
done; \
|
||||
) | sort -u \
|
||||
| grep -Ev 'ATTRIBUTE_NORETURN|SIZE_MAX' \
|
||||
| sed 's/^/^# *define /' \
|
||||
> $@-t
|
||||
@mv $@-t $@
|
||||
|
||||
# Don't define macros that we already get from gnulib header files.
|
||||
sc_always_defined_macros: .re-defmac
|
||||
@if test -f $(srcdir)/src/system.h; then \
|
||||
trap 'rc=$$?; rm -f .re-defmac; exit $$rc' 0 1 2 3 15; \
|
||||
grep -f .re-defmac $$($(VC_LIST)) \
|
||||
&& { echo '$(ME): define the above via some gnulib .h file' \
|
||||
1>&2; exit 1; } || :; \
|
||||
fi
|
||||
|
||||
# Create a list of regular expressions matching the names
|
||||
# of files included from system.h. Exclude a couple.
|
||||
.re-list:
|
||||
@sed -n '/^# *include /s///p' $(srcdir)/src/system.h \
|
||||
| grep -Ev 'sys/(param|file)\.h' \
|
||||
| sed 's/ .*//;;s/^["<]/^# *include [<"]/;s/\.h[">]$$/\\.h[">]/' \
|
||||
> $@-t
|
||||
@mv $@-t $@
|
||||
|
||||
# Files in src/ should not include directly any of
|
||||
# the headers already included via system.h.
|
||||
sc_system_h_headers: .re-list
|
||||
@if test -f $(srcdir)/src/system.h; then \
|
||||
trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \
|
||||
grep -nE -f .re-list \
|
||||
$$($(VC_LIST) src | \
|
||||
grep -Ev '((copy|system)\.h|parse-gram\.c)$$') \
|
||||
&& { echo '$(ME): the above are already included via system.h'\
|
||||
1>&2; exit 1; } || :; \
|
||||
fi
|
||||
|
||||
sc_sun_os_names:
|
||||
@grep -nEi \
|
||||
'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_the_the:
|
||||
@grep -ni '\<the ''the\>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found use of "the ''the";' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_tight_scope:
|
||||
$(MAKE) -C src $@
|
||||
@re='\<the ''the\>' \
|
||||
ignore_case=1 msg='found use of "the ''the";' \
|
||||
$(_prohibit_regexp)
|
||||
|
||||
sc_trailing_blank:
|
||||
@grep -n '[ ]$$' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found trailing blank(s)' \
|
||||
1>&2; exit 1; } || :
|
||||
@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.
|
||||
@ -310,8 +290,8 @@ sc_TAB_in_indentation:
|
||||
$$($(VC_LIST_EXCEPT) \
|
||||
| grep -E '\.[ch](\.in)?$$' \
|
||||
| grep -v '^gnulib/') && \
|
||||
{ echo '$(ME): found TAB(s) use for indentation; use spaces' \
|
||||
1>&2; exit 1; } || :
|
||||
{ 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
|
||||
@ -330,38 +310,70 @@ 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"; \
|
||||
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 += virXendError
|
||||
msg_gen_function += virXMLError
|
||||
msg_gen_function += virHashError
|
||||
msg_gen_function += virConfError
|
||||
msg_gen_function += virTestError
|
||||
msg_gen_function += virLibConnError
|
||||
msg_gen_function += virStorageReportError
|
||||
msg_gen_function += virxmlRpcError
|
||||
msg_gen_function += virLog
|
||||
msg_gen_function += qemudLog
|
||||
msg_gen_function += remoteDispatchError
|
||||
msg_gen_function += virStorageLog
|
||||
msg_gen_function += xenXMError
|
||||
msg_gen_function += ERROR
|
||||
msg_gen_function += ERROR0
|
||||
msg_gen_function += REMOTE_DEBUG
|
||||
msg_gen_function += ReportError
|
||||
msg_gen_function += qemudReportError
|
||||
msg_gen_function += openvzLog
|
||||
msg_gen_function += openvzError
|
||||
msg_gen_function += virDomainReportError
|
||||
msg_gen_function += virReportErrorHelper
|
||||
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 += 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 += virXenError
|
||||
# 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))
|
||||
@ -385,9 +397,16 @@ sc_unmarked_diagnostics:
|
||||
exit 1; } || :
|
||||
|
||||
sc_prohibit_virBufferAdd_with_string_literal:
|
||||
@grep -nE '\<virBufferAdd *\([^,]+, *"[^"]' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): use virBufferAddLit, not virBufferAdd,' \
|
||||
'with a string literal' 1>&2; exit 1; } || :
|
||||
@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)
|
||||
@ -398,18 +417,97 @@ sc_useless_cpp_parens:
|
||||
|
||||
# Require the latest GPL.
|
||||
sc_GPL_version:
|
||||
@grep -n 'either ''version [^3]' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): GPL vN, N!=3' 1>&2; exit 1; } || :
|
||||
@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 src src-c89
|
||||
(cd src-c89; patch -p1 -V never --fuzz=0) < src/c99-to-c89.diff \
|
||||
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 src src-c89 | sed 's,src-c89/,src/,' \
|
||||
| grep -v '^Only in' > new-diff || : ; fi
|
||||
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'; \
|
||||
@ -418,21 +516,6 @@ patch-check:
|
||||
test "$$msg" = ok && rm -rf src-c89 $@.1 $@.2 || echo "$$msg" 1>&2; \
|
||||
test "$$msg" = ok
|
||||
|
||||
# Ensure that date's --help output stays in sync with the info
|
||||
# documentation for GNU strftime. The only exception is %N,
|
||||
# which date accepts but GNU strftime does not.
|
||||
extract_char = sed 's/^[^%][^%]*%\(.\).*/\1/'
|
||||
strftime-check:
|
||||
@if test -f $(srcdir)/src/date.c; then \
|
||||
grep '^ %. ' $(srcdir)/src/date.c | sort \
|
||||
| $(extract_char) > $@-src; \
|
||||
{ echo N; \
|
||||
info libc date calendar format | grep '^ `%.'\' \
|
||||
| $(extract_char); } | sort > $@-info; \
|
||||
diff -u $@-src $@-info || exit 1; \
|
||||
rm -f $@-src $@-info; \
|
||||
fi
|
||||
|
||||
check-AUTHORS:
|
||||
$(MAKE) -C src $@
|
||||
|
||||
@ -462,9 +545,10 @@ changelog-check:
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
m4-check:
|
||||
@grep -n 'AC_DEFUN([^[]' m4/*.m4 \
|
||||
&& { echo 'Makefile.maint: quote the first arg to AC_DEFUN' 1>&2; \
|
||||
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 = \
|
||||
@ -473,21 +557,21 @@ apply the above patch\n'
|
||||
|
||||
# Verify that all source files using _() are listed in po/POTFILES.in.
|
||||
po_file = po/POTFILES.in
|
||||
po-check:
|
||||
@if test -f po/POTFILES.in; then \
|
||||
grep -E -v '^(#|$$)' 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 \
|
||||
djgpp/* | man/*) continue;; \
|
||||
*/c99-to-c89.diff) continue;; \
|
||||
*.m4) continue;; \
|
||||
*.?|*.??) ;; \
|
||||
*) continue;; \
|
||||
esac; \
|
||||
case $$file in \
|
||||
*.[ch]) \
|
||||
base=`expr " $$file" : ' \(.*\)\..'`; \
|
||||
{ test -f $$base.l || test -f $$base.y; } && continue;; \
|
||||
*) continue;; \
|
||||
esac; \
|
||||
files="$$files $$file"; \
|
||||
done; \
|
||||
@ -498,22 +582,14 @@ po-check:
|
||||
rm -f $@-1 $@-2; \
|
||||
fi
|
||||
|
||||
# In a definition of #define AUTHORS "... and ..." where the RHS contains
|
||||
# the English word `and', the string must be marked with `N_ (...)' so that
|
||||
# gettext recognizes it as a string requiring translation.
|
||||
author_mark_check:
|
||||
@grep -n '^# *define AUTHORS "[^"]* and ' src/*.c |grep -v ' N_ (' && \
|
||||
{ echo 'Makefile.maint: enclose the above strings in N_ (...)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# 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 = 'Makefile.maint: Do not use `:'\'' above; use @PATH_SEPARATOR@ instead'
|
||||
makefile_path_separator_check:
|
||||
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; } || :
|
||||
|
||||
@ -526,7 +602,7 @@ writable-files:
|
||||
test -w $$file \
|
||||
|| { echo ERROR: $$file is not writable; fail=1; }; \
|
||||
done; \
|
||||
test "$$fail" && exit 1 || :
|
||||
test "$$fail" && exit 1 || : ; \
|
||||
fi
|
||||
|
||||
v_etc_file = lib/version-etc.c
|
||||
@ -534,24 +610,24 @@ 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.
|
||||
copyright-check:
|
||||
@if test -f $(v_etc_file); then \
|
||||
sc_copyright_check:
|
||||
@if test -f $(v_etc_file); then \
|
||||
grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \
|
||||
>/dev/null \
|
||||
>/dev/null \
|
||||
|| { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \
|
||||
exit 1; }; \
|
||||
exit 1; }; \
|
||||
fi
|
||||
@if test -f $(sample-test); then \
|
||||
grep '# Copyright (C) '$$(date +%Y)' Free' $(sample-test) \
|
||||
>/dev/null \
|
||||
@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; }; \
|
||||
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; }; \
|
||||
@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:
|
||||
@ -570,21 +646,134 @@ 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 for-loop below ensures that there is a bin/ directory full of all
|
||||
# of the programs under test (except the few that are required for basic
|
||||
# Makefile rules), all symlinked to the just-built "false" program.
|
||||
# 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.
|
||||
TMPDIR ?= /tmp
|
||||
t=$(TMPDIR)/$(PACKAGE)/test
|
||||
my-distcheck: $(local-check) check
|
||||
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
|
||||
@ -593,17 +782,13 @@ my-distcheck: $(local-check) check
|
||||
&& $(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)
|
||||
if test -f $(srcdir)/src/c99-to-c89.diff; then \
|
||||
cd $(t)/$(distdir) \
|
||||
&& (cd src && patch -V never --fuzz=0 <c99-to-c89.diff) \
|
||||
&& ./configure --disable-largefile \
|
||||
CFLAGS='-Werror -ansi -Wno-long-long' \
|
||||
&& $(MAKE); \
|
||||
fi
|
||||
-rm -rf $(t)
|
||||
@echo "========================"; \
|
||||
echo "$(distdir).tar.gz is ready for distribution"; \
|
||||
@ -633,3 +818,10 @@ sync-vcs-ignore-files:
|
||||
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
|
||||
|
85
Makefile.nonreentrant
Normal file
85
Makefile.nonreentrant
Normal file
@ -0,0 +1,85 @@
|
||||
|
||||
#
|
||||
# Generated by running the following on Fedora 9:
|
||||
#
|
||||
# nm -D --defined-only /lib/libc.so.6 \
|
||||
# | grep '_r$' \
|
||||
# | awk '{print $3}' \
|
||||
# | grep -v __ \
|
||||
# | grep -v qsort \ # Red herring since we don't need to pass extra args to qsort comparator
|
||||
# | grep -v readdir \ # This is safe as long as each DIR * instance is only used by one thread
|
||||
# | sort \
|
||||
# | uniq \
|
||||
# | sed -e 's/_r//'
|
||||
#
|
||||
|
||||
NON_REENTRANT =
|
||||
NON_REENTRANT += asctime
|
||||
NON_REENTRANT += ctime
|
||||
NON_REENTRANT += drand48
|
||||
NON_REENTRANT += ecvt
|
||||
NON_REENTRANT += erand48
|
||||
NON_REENTRANT += ether_aton
|
||||
NON_REENTRANT += ether_ntoa
|
||||
NON_REENTRANT += fcvt
|
||||
NON_REENTRANT += fgetgrent
|
||||
NON_REENTRANT += fgetpwent
|
||||
NON_REENTRANT += fgetspent
|
||||
NON_REENTRANT += getaliasbyname
|
||||
NON_REENTRANT += getaliasent
|
||||
NON_REENTRANT += getdate
|
||||
NON_REENTRANT += getgrent
|
||||
NON_REENTRANT += getgrgid
|
||||
NON_REENTRANT += getgrnam
|
||||
NON_REENTRANT += gethostbyaddr
|
||||
NON_REENTRANT += gethostbyname2
|
||||
NON_REENTRANT += gethostbyname
|
||||
NON_REENTRANT += gethostent
|
||||
NON_REENTRANT += getlogin
|
||||
NON_REENTRANT += getmntent
|
||||
NON_REENTRANT += getnetbyaddr
|
||||
NON_REENTRANT += getnetbyname
|
||||
NON_REENTRANT += getnetent
|
||||
NON_REENTRANT += getnetgrent
|
||||
NON_REENTRANT += getprotobyname
|
||||
NON_REENTRANT += getprotobynumber
|
||||
NON_REENTRANT += getprotoent
|
||||
NON_REENTRANT += getpwent
|
||||
NON_REENTRANT += getpwnam
|
||||
NON_REENTRANT += getpwuid
|
||||
NON_REENTRANT += getrpcbyname
|
||||
NON_REENTRANT += getrpcbynumber
|
||||
NON_REENTRANT += getrpcent
|
||||
NON_REENTRANT += getservbyname
|
||||
NON_REENTRANT += getservbyport
|
||||
NON_REENTRANT += getservent
|
||||
NON_REENTRANT += getspent
|
||||
NON_REENTRANT += getspnam
|
||||
NON_REENTRANT += getutent
|
||||
NON_REENTRANT += getutid
|
||||
NON_REENTRANT += getutline
|
||||
NON_REENTRANT += gmtime
|
||||
NON_REENTRANT += hcreate
|
||||
NON_REENTRANT += hdestroy
|
||||
NON_REENTRANT += hsearch
|
||||
NON_REENTRANT += initstate
|
||||
NON_REENTRANT += jrand48
|
||||
NON_REENTRANT += lcong48
|
||||
NON_REENTRANT += localtime
|
||||
NON_REENTRANT += lrand48
|
||||
NON_REENTRANT += mrand48
|
||||
NON_REENTRANT += nrand48
|
||||
NON_REENTRANT += ptsname
|
||||
NON_REENTRANT += qecvt
|
||||
NON_REENTRANT += qfcvt
|
||||
NON_REENTRANT += random
|
||||
NON_REENTRANT += rand
|
||||
NON_REENTRANT += seed48
|
||||
NON_REENTRANT += setstate
|
||||
NON_REENTRANT += sgetspent
|
||||
NON_REENTRANT += srand48
|
||||
NON_REENTRANT += srandom
|
||||
NON_REENTRANT += strerror
|
||||
NON_REENTRANT += strtok
|
||||
NON_REENTRANT += tmpnam
|
||||
NON_REENTRANT += ttyname
|
197
NEWS
197
NEWS
@ -5,6 +5,203 @@
|
||||
http://libvirt.org/news.html
|
||||
|
||||
|
||||
0.6.2: Apr 3 2009:
|
||||
- New features: support SASL auth for VNC server (Daniel Berrange),
|
||||
memory ballooning in QEMU (Daniel Berrange), SCSI HBA storage pool
|
||||
support (Dave Allan), PCI passthrough in Xen driver (Daniel
|
||||
Berrange)
|
||||
- Portability: be more flexible in QEmu binaries paths (Daniel
|
||||
Berrange), Mingw portability fixes (Daniel Berrange),
|
||||
- Documentation: add security attributes in RNG schemas, cleanup
|
||||
of architecture docs, missing disk bus values in RNG schemas,
|
||||
- Bug fixes: tap vs vbd type on block detach (Cole Robinson and
|
||||
Takahashi Tomohiro), bad free on storage volume error (Daniel
|
||||
Berrange), maplenght computations in remote driver (Daniel Berrange),
|
||||
event dispatching in the daemon (Daniel Berrange), virDomainSetVcpus
|
||||
deadlock (Daniel Berrange), save deadlock in test driver (Cole
|
||||
Robinson), fix timing of security driver init (Cole Robinson),
|
||||
forbid readonly connections from dumping the XML safe info (Cole
|
||||
Robinson), file descriptor leak on remote access,
|
||||
fix labelling of shared/readonly devices (Dan Walsh),
|
||||
virsh missing auth on shell commands (Matthias Bolte),
|
||||
avoid zombie on exec pipe errors (Ryota Ozaki),
|
||||
memory leak in virNodeDeviceGetParent (Daniel Berrange),
|
||||
URI check in migration (Daniel Berrange), various memory bug fixes
|
||||
(Daniel Berrange), python bindings generator fix (Daniel Berrange),
|
||||
NUMA memory fixes (Daniel Berrange), various svirt fixes (Daniel
|
||||
Berrange), fix sparse volume allocation reporting (Cole Robinson),
|
||||
test driver domain restore return value (Cole Robinson),
|
||||
do not lose file format info on volume refresh (Cole Robinson)
|
||||
- Improvements: get CPU usage info for LXC (Ryota Ozaki), fix domain
|
||||
RNG to add ac97 and tests (Pritesh Kothari), OpenVZ support for
|
||||
non-template filesystem root (Florian Vichot), improve arch
|
||||
capabilities generation (Daniel Berrange), modularization of spec
|
||||
file (Ryota Ozaki), better error reports in SEXPR generation (Daniel
|
||||
Berrange), support for vifname parameter in VIF config (Daniel
|
||||
Berrange), localtime handling for new xen (Daniel Berrange),
|
||||
error reporting/ verification of security labels (Dan Walsh),
|
||||
add --console arg for create and start virsh commands (Daniel
|
||||
Berrange), refresh volume alloc/capacity when dumping XML (Cole
|
||||
Robinson)
|
||||
- Cleanups: FILE * leaks removal, unused parameters flagging
|
||||
(Maximilian Wilhelm), switch to pre-C99 struct initialization
|
||||
for drivers (Chris Lalancette), symlinks resolving cleanup (Daniel
|
||||
Berrange)
|
||||
|
||||
|
||||
0.6.1: Mar 3 2009:
|
||||
- New features: new APIs for Node device detach reattach and reset
|
||||
(Mark McLoughlin), sVirt mandatory access control support (James
|
||||
Morris and Dan Walsh)
|
||||
- Portability: non gcc toolchain (John Levon), gcc-4.4 warnings fixes
|
||||
(Mark McLoughlin), fix build without LXC and QEmu (Jim Meyering)
|
||||
- Documentation: man page bugzilla URL (Mark McLoughlin), typo
|
||||
in domain format (Jesse Farinacci), clock offset fix (Mark
|
||||
McLoughlin), hostdev description typo (Mark McLoughlin), static
|
||||
host IP (Charles Duffy), new example program (David Allan)
|
||||
- Bug fixes: NULL dereference in LXC (Jim Meyering), fix domain
|
||||
error reporting (John Levon), fix loop of libvirtd --timeout
|
||||
(Daniel Berrange), limit history to 500 to restrict virsh memory
|
||||
(Daniel Berrange), wrong lvm volume format check (Cole Robinson),
|
||||
I/O error in daemon and associated remote acces crash (Daniel
|
||||
Berrange), fix autostart of session daemon (Daniel Berrange),
|
||||
restart guest on qemu migration failures (Chris Lalancette),
|
||||
config parsing leaks (Ryota Ozaki), DBus multithreading activation
|
||||
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<>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<>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<>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
|
||||
McLoughlin), function to parse node device XML descriptions and
|
||||
associated test (Mark McLoughlin), generate network bridge names if
|
||||
not provided (Cole Robinson), recognize ejectable media in hostdev
|
||||
hal driver (Cole Robinson), integration of sVirt (Daniel Berrange)
|
||||
- Cleanups: printf NULL string checks (John Levon), remove uses of
|
||||
strerror and use virStrerror (Jim Meyering), remove redundant NULL
|
||||
assignments (Jim Meyering), QEmu driver logging and exec cleanups
|
||||
(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<>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),
|
||||
various tests cleanups and improvements (Jim Meyering), fix the
|
||||
internal export list with new APIs (Daniel Berrange), cleanups on
|
||||
new APIs for Node device (Daniel Berrange)
|
||||
|
||||
|
||||
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<>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
|
||||
(Daniel Berrange), fix distcheck (Jim Meyering), build in
|
||||
debug mode (Jim Meyering), libnuma API portability (Jim Meyering),
|
||||
many portability fixes pointed by Solaris (John Levon), non-gcc
|
||||
portability fixes (John Levon), various include fixes (Jim Meyering),
|
||||
various Windows and Mingw portability fixes (Daniel Berrange),
|
||||
solaris Xen fixes (John Levon), RPC portability to Solaris (Daniel
|
||||
Berrange)
|
||||
- Documentation: typo fixes (Richard Jones), logging support,
|
||||
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<>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
|
||||
daemon bug fixes (John Levon), OpenVZ MAC addresses generation
|
||||
(Evgeniy Sokolov), poll call initialization fix (Daniel Berrange),
|
||||
various Xen driver fixes (John Levon), segfault on device
|
||||
back compat (Cole Robinson), couple Xen bug fixes coming from
|
||||
RHEL (Markus Armbruster), buffer overflow in libvirt proxy
|
||||
(rasputin@email.ru), vnc port report (John Levon), repair save
|
||||
and restore on recent KVM versions (Daniel Berrange), Xen
|
||||
cpu pinning XML fix (John Levon), various xen driver fixes
|
||||
(Daniel Berrange), some memory leak fixes (Daniel Berrange)
|
||||
- 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<>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<>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<>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
|
||||
QEmu/KVM tun/tap performances (Mark McLoughlin), enable floppies
|
||||
for Xen fully virt (John Levon), support VNC password settings
|
||||
for QEmu/KVM (Daniel Berrange), qemu driver version reporting
|
||||
(Daniel Berrange)
|
||||
- Cleanups: converting linked lists to arrays (Daniel Berrange),
|
||||
daemon RPC handling refactoring (Daniel Berrange), strings cleanups
|
||||
(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<>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<>nther), add
|
||||
virGetHostname (David Lutterkort), add flags argument to the full
|
||||
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
|
||||
usage (Daniel Berrange), many small cleanups (Jim Meyering and
|
||||
Daniel Berrange), examples Makefile generator (John Levon),
|
||||
mis-use of PF_UNIX as a protocol (John Levon), cleanup OOM
|
||||
error paths (Jim Meyering), temporary fix fro valgrind on lxc
|
||||
(Daniel Berrange), QEmu driver init cleanups (Daniel Berrange)
|
||||
|
||||
|
||||
0.5.1: Dec 4 2008:
|
||||
- Portability: fix missing dep in spec file, fix compilation with new
|
||||
NUMA libraries (Daniel Berrange), udev compatibility for RHEL (Chris
|
||||
Lalancette),
|
||||
- Documentation: documentation copy and paste errors and typo (Cole
|
||||
Robinson)
|
||||
- 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<>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)
|
||||
- Improvements: use xend preferably to hypervisor call to set Xen
|
||||
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<>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)
|
||||
|
||||
|
||||
0.5.0: Nov 25 2008:
|
||||
- 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),
|
||||
|
2
RENAMES
2
RENAMES
@ -2,8 +2,6 @@
|
||||
#
|
||||
# File renames don't normally go into patches because they make
|
||||
# the patches much harder to read, so list them here instead.
|
||||
#
|
||||
# $Id$
|
||||
|
||||
# Clearer naming scheme after Xen-unified patch went in.
|
||||
src/xen_internal.c src/xen_internal_hv.c
|
||||
|
24
acinclude.m4
24
acinclude.m4
@ -45,21 +45,9 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
|
||||
;;
|
||||
esac
|
||||
|
||||
compiler_flags=
|
||||
COMPILER_FLAGS=
|
||||
for option in $try_compiler_flags; do
|
||||
SAVE_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $option"
|
||||
AC_MSG_CHECKING([whether gcc understands $option])
|
||||
AC_TRY_LINK([], [],
|
||||
has_option=yes,
|
||||
has_option=no,)
|
||||
CFLAGS="$SAVE_CFLAGS"
|
||||
AC_MSG_RESULT($has_option)
|
||||
if test $has_option = yes; then
|
||||
compiler_flags="$compiler_flags $option"
|
||||
fi
|
||||
unset has_option
|
||||
unset SAVE_CFLAGS
|
||||
gl_COMPILER_FLAGS($option)
|
||||
done
|
||||
unset option
|
||||
unset try_compiler_flags
|
||||
@ -85,8 +73,14 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
|
||||
fi
|
||||
AC_MSG_RESULT($complCFLAGS)
|
||||
|
||||
WARN_CFLAGS="$compiler_flags $complCFLAGS"
|
||||
WARN_CFLAGS="$COMPILER_FLAGS $complCFLAGS"
|
||||
AC_SUBST(WARN_CFLAGS)
|
||||
|
||||
dnl Needed to keep compile quiet on python 2.4
|
||||
COMPILER_FLAGS=
|
||||
gl_COMPILER_FLAGS(-Wno-redundant-decls)
|
||||
WARN_PYTHON_CFLAGS=$COMPILER_FLAGS
|
||||
AC_SUBST(WARN_PYTHON_CFLAGS)
|
||||
])
|
||||
|
||||
|
||||
|
@ -65,6 +65,7 @@ if [ -x /usr/bin/i686-pc-mingw32-gcc ]; then
|
||||
--build=$(uname -m)-pc-linux \
|
||||
--host=i686-pc-mingw32 \
|
||||
--prefix="$AUTOBUILD_INSTALL_ROOT/i686-pc-mingw32/sys-root/mingw" \
|
||||
--enable-compile-warnings=error \
|
||||
--without-sasl \
|
||||
--without-avahi \
|
||||
--without-polkit \
|
||||
|
@ -73,6 +73,7 @@ gethostname
|
||||
getpass
|
||||
gettext
|
||||
inet_pton
|
||||
ioctl
|
||||
mkstemp
|
||||
mktempd
|
||||
perror
|
||||
@ -80,13 +81,16 @@ physmem
|
||||
poll
|
||||
posix-shell
|
||||
recv
|
||||
random_r
|
||||
send
|
||||
setsockopt
|
||||
socket
|
||||
stpcpy
|
||||
strndup
|
||||
strerror
|
||||
strsep
|
||||
sys_stat
|
||||
time_r
|
||||
useless-if-before-free
|
||||
vasprintf
|
||||
verify
|
||||
@ -99,6 +103,7 @@ vc-list-files
|
||||
# put *.[ch] files in new gnulib/lib/ dir.
|
||||
|
||||
$gnulib_tool \
|
||||
--no-vc-files \
|
||||
--lgpl=2 \
|
||||
--with-tests \
|
||||
--m4-base=gnulib/m4 \
|
||||
|
158
configure.in
158
configure.in
@ -1,6 +1,6 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT([libvirt], [0.5.0])
|
||||
AC_INIT([libvirt], [0.6.2])
|
||||
AC_CONFIG_SRCDIR([src/libvirt.c])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AM_CONFIG_HEADER([config.h])
|
||||
@ -23,7 +23,7 @@ AC_SUBST([LIBVIRT_VERSION_INFO])
|
||||
AC_SUBST([LIBVIRT_VERSION_NUMBER])
|
||||
|
||||
dnl Required minimum versions of all libs we depend on
|
||||
LIBXML_REQUIRED="2.5.0"
|
||||
LIBXML_REQUIRED="2.6.0"
|
||||
GNUTLS_REQUIRED="1.0.25"
|
||||
AVAHI_REQUIRED="0.6.0"
|
||||
POLKIT_REQUIRED="0.6"
|
||||
@ -60,6 +60,11 @@ AM_PROG_LIBTOOL
|
||||
|
||||
AM_PROG_CC_C_O
|
||||
|
||||
VERSION_SCRIPT_FLAGS=-Wl,--version-script=
|
||||
`/usr/bin/ld --help 2>&1 | grep -- --version-script >/dev/null` || \
|
||||
VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
|
||||
AC_SUBST(VERSION_SCRIPT_FLAGS)
|
||||
|
||||
LIBVIRT_COMPILE_WARNINGS([maximum])
|
||||
|
||||
dnl Support large files / 64 bit seek offsets.
|
||||
@ -67,25 +72,29 @@ dnl Use --disable-largefile if you don't want this.
|
||||
AC_SYS_LARGEFILE
|
||||
|
||||
dnl Availability of various common functions (non-fatal if missing).
|
||||
AC_CHECK_FUNCS([cfmakeraw regexec uname sched_getaffinity getuid getgid])
|
||||
AC_CHECK_FUNCS([cfmakeraw regexec uname sched_getaffinity getuid getgid posix_fallocate mmap readlink])
|
||||
|
||||
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])
|
||||
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])
|
||||
|
||||
dnl Where are the XDR functions?
|
||||
dnl If portablexdr is installed, prefer that.
|
||||
dnl Otherwise try -lrpc (Cygwin) -lxdr (some MinGW) or none (most Unix)
|
||||
dnl Otherwise try -lrpc (Cygwin) -lxdr (some MinGW), -lnsl (Solaris)
|
||||
dnl or none (most Unix)
|
||||
AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
|
||||
AC_SEARCH_LIBS([xdrmem_create],[rpc xdr])
|
||||
AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
|
||||
])
|
||||
|
||||
AC_CHECK_LIB([intl],[gettext],[])
|
||||
|
||||
dnl Do we have rpcgen?
|
||||
AC_PATH_PROG([RPCGEN], [rpcgen], [no])
|
||||
AM_CONDITIONAL([RPCGEN], [test "x$ac_cv_path_RPCGEN" != "xno"])
|
||||
AM_CONDITIONAL([HAVE_RPCGEN], [test "x$ac_cv_path_RPCGEN" != "xno"])
|
||||
dnl Is this GLIBC's buggy rpcgen?
|
||||
AM_CONDITIONAL([GLIBC_RPCGEN],
|
||||
AM_CONDITIONAL([HAVE_GLIBC_RPCGEN],
|
||||
[test "x$ac_cv_path_RPCGEN" != "xno" &&
|
||||
$ac_cv_path_RPCGEN -t </dev/null >/dev/null 2>&1])
|
||||
|
||||
@ -115,11 +124,29 @@ AC_PATH_PROG([DNSMASQ], [dnsmasq], [dnsmasq],
|
||||
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
||||
AC_PATH_PROG([BRCTL], [brctl], [brctl],
|
||||
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
||||
AC_PATH_PROG([UDEVADM], [udevadm], [],
|
||||
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
||||
AC_PATH_PROG([UDEVSETTLE], [udevsettle], [],
|
||||
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
||||
AC_PATH_PROG([MODPROBE], [modprobe], [],
|
||||
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
||||
|
||||
AC_DEFINE_UNQUOTED([DNSMASQ],["$DNSMASQ"],
|
||||
[Location or name of the dnsmasq program])
|
||||
AC_DEFINE_UNQUOTED([BRCTL],["$BRCTL"],
|
||||
[Location or name of the brctl program (see bridge-utils)])
|
||||
if test -n "$UDEVADM"; then
|
||||
AC_DEFINE_UNQUOTED([UDEVADM],["$UDEVADM"],
|
||||
[Location or name of the udevadm program])
|
||||
fi
|
||||
if test -n "$UDEVSETTLE"; then
|
||||
AC_DEFINE_UNQUOTED([UDEVSETTLE],["$UDEVSETTLE"],
|
||||
[Location or name of the udevsettle program])
|
||||
fi
|
||||
if test -n "$MODPROBE"; then
|
||||
AC_DEFINE_UNQUOTED([MODPROBE],["$MODPROBE"],
|
||||
[Location or name of the modprobe program])
|
||||
fi
|
||||
|
||||
dnl Specific dir for HTML output ?
|
||||
AC_ARG_WITH([html-dir], [AC_HELP_STRING([--with-html-dir=path],
|
||||
@ -178,6 +205,7 @@ dnl --enable-debug=(yes|no)
|
||||
AC_ARG_ENABLE([debug],
|
||||
[AC_HELP_STRING([--enable-debug=no/yes],
|
||||
[enable debugging output])],[],[enable_debug=yes])
|
||||
AM_CONDITIONAL([ENABLE_DEBUG], test x"$enable_debug" = x"yes")
|
||||
if test x"$enable_debug" = x"yes"; then
|
||||
AC_DEFINE([ENABLE_DEBUG], [], [whether debugging is enabled])
|
||||
fi
|
||||
@ -212,6 +240,14 @@ fi
|
||||
AM_CONDITIONAL([LIBVIRT_INIT_SCRIPTS_RED_HAT], test x$with_init_scripts = xredhat)
|
||||
AC_MSG_RESULT($with_init_scripts)
|
||||
|
||||
dnl RHEL-5 has a peculiar version of Xen, which requires some special casing
|
||||
AC_ARG_WITH([rhel5-api],
|
||||
[AC_HELP_STRING([--with-rhel5-api=[ARG]],
|
||||
[build for the RHEL-5 API [default=no]])])
|
||||
if test x"$with_rhel5_api" = x"yes"; then
|
||||
AC_DEFINE([WITH_RHEL5_API], [1], [whether building for the RHEL-5 API])
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl ensure that Fedora's system-config-firewall knows
|
||||
dnl about libvirt's iptables rules
|
||||
@ -480,18 +516,26 @@ if test "x$with_sasl" != "xno"; then
|
||||
fail=1
|
||||
fi])
|
||||
if test "x$with_sasl" != "xno" ; then
|
||||
AC_CHECK_LIB([sasl2], [sasl_client_init],[with_sasl=yes],[
|
||||
if test "x$with_sasl" = "xcheck" ; then
|
||||
AC_CHECK_LIB([sasl2], [sasl_client_init],[
|
||||
SASL_LIBS="$SASL_LIBS -lsasl2"
|
||||
with_sasl=yes
|
||||
],[
|
||||
AC_CHECK_LIB([sasl], [sasl_client_init],[
|
||||
SASL_LIBS="$SASL_LIBS -lsasl"
|
||||
with_sasl=yes
|
||||
],[
|
||||
if test "x$with_sasl" = "xcheck" ; then
|
||||
with_sasl=no
|
||||
else
|
||||
else
|
||||
fail=1
|
||||
fi])
|
||||
fi
|
||||
])
|
||||
])
|
||||
fi
|
||||
test $fail = 1 &&
|
||||
AC_MSG_ERROR([You must install the Cyrus SASL development package in order to compile libvirt])
|
||||
CFLAGS="$old_cflags"
|
||||
LIBS="$old_libs"
|
||||
SASL_LIBS="$SASL_LIBS -lsasl2"
|
||||
if test "x$with_sasl" = "xyes" ; then
|
||||
AC_DEFINE_UNQUOTED([HAVE_SASL], 1,
|
||||
[whether Cyrus SASL is available for authentication])
|
||||
@ -604,6 +648,45 @@ AM_CONDITIONAL([HAVE_SELINUX], [test "$with_selinux" != "no"])
|
||||
AC_SUBST([SELINUX_CFLAGS])
|
||||
AC_SUBST([SELINUX_LIBS])
|
||||
|
||||
|
||||
AC_ARG_WITH([secdriver-selinux],
|
||||
[ --with-secdriver-selinux use SELinux security driver],
|
||||
[],
|
||||
[with_secdriver_selinux=check])
|
||||
|
||||
if test "$with_selinux" != "yes" ; then
|
||||
if test "$with_secdriver_selinux" = "check" ; then
|
||||
with_secdriver_selinux=no
|
||||
else
|
||||
AC_MSG_ERROR([You must install the SELinux development package in order to compile libvirt])
|
||||
fi
|
||||
else
|
||||
old_cflags="$CFLAGS"
|
||||
old_libs="$LIBS"
|
||||
CFLAGS="$CFLAGS $SELINUX_CFLAGS"
|
||||
LIBS="$CFLAGS $SELINUX_LIBS"
|
||||
|
||||
fail=0
|
||||
AC_CHECK_FUNC([selinux_virtual_domain_context_path], [], [fail=1])
|
||||
AC_CHECK_FUNC([selinux_virtual_image_context_path], [], [fail=1])
|
||||
CFLAGS="$old_cflags"
|
||||
LIBS="$old_libs"
|
||||
|
||||
if test "$fail" = "1" ; then
|
||||
if test "$with_secdriver_selinux" = "check" ; then
|
||||
with_secdriver_selinux=no
|
||||
else
|
||||
AC_MSG_ERROR([You must install the SELinux development package in order to compile libvirt])
|
||||
fi
|
||||
else
|
||||
with_secdriver_selinux=yes
|
||||
AC_DEFINE_UNQUOTED([WITH_SECDRIVER_SELINUX], 1, [whether SELinux security driver is available])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_SECDRIVER_SELINUX], [test "$with_secdriver_selinux" != "no"])
|
||||
|
||||
|
||||
|
||||
dnl NUMA lib
|
||||
AC_ARG_WITH([numactl],
|
||||
[ --with-numactl use numactl for host topology info],
|
||||
@ -692,6 +775,12 @@ if test "$with_network" = "yes" ; then
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_NETWORK], [test "$with_network" = "yes"])
|
||||
|
||||
with_bridge=no
|
||||
if test "$with_qemu:$with_lxc:$with_network" != "no:no:no"; then
|
||||
with_bridge=yes
|
||||
AC_DEFINE_UNQUOTED([WITH_BRIDGE], 1, [whether bridge code is needed])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_BRIDGE], [test "$with_bridge" = "yes"])
|
||||
|
||||
dnl
|
||||
dnl Storage driver checks
|
||||
@ -703,6 +792,8 @@ AC_ARG_WITH([storage-lvm],
|
||||
[ --with-storage-lvm with LVM backend for the storage driver (on)],[],[with_storage_lvm=check])
|
||||
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-disk],
|
||||
[ --with-storage-disk with GPartd Disk backend for the storage driver (on)],[],[with_storage_disk=check])
|
||||
|
||||
@ -712,6 +803,7 @@ if test "$with_libvirtd" = "no"; then
|
||||
with_storage_fs=no
|
||||
with_storage_lvm=no
|
||||
with_storage_iscsi=no
|
||||
with_storage_scsi=no
|
||||
with_storage_disk=no
|
||||
fi
|
||||
if test "$with_storage_dir" = "yes" ; then
|
||||
@ -840,6 +932,13 @@ if test "$with_storage_iscsi" = "yes" -o "$with_storage_iscsi" = "check"; then
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_STORAGE_ISCSI], [test "$with_storage_iscsi" = "yes"])
|
||||
|
||||
if test "$with_storage_scsi" = "check"; then
|
||||
with_storage_scsi=yes
|
||||
|
||||
AC_DEFINE_UNQUOTED([WITH_STORAGE_SCSI], 1,
|
||||
[whether SCSI backend for storage driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_STORAGE_SCSI], [test "$with_storage_scsi" = "yes"])
|
||||
|
||||
|
||||
LIBPARTED_CFLAGS=
|
||||
@ -1152,6 +1251,7 @@ if test "x$with_hal" = "xyes" -o "x$with_hal" = "xcheck"; then
|
||||
CFLAGS="$CFLAGS $HAL_CFLAGS"
|
||||
LDFLAGS="$LDFLAGS $HAL_LIBS"
|
||||
AC_CHECK_FUNCS([libhal_get_all_devices],,[with_hal=no])
|
||||
AC_CHECK_FUNCS([dbus_watch_get_unix_fd])
|
||||
CFLAGS="$old_CFLAGS"
|
||||
LDFLAGS="$old_LDFLAGS"
|
||||
fi
|
||||
@ -1222,6 +1322,8 @@ then
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_NODE_DEVICES], [test "$with_nodedev" = "yes"])
|
||||
|
||||
AM_CONDITIONAL([WITH_LINUX], [test `uname -s` = "Linux"])
|
||||
|
||||
# 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.
|
||||
@ -1232,10 +1334,10 @@ cp -f COPYING.LIB COPYING
|
||||
AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
|
||||
docs/examples/Makefile docs/devhelp/Makefile \
|
||||
docs/examples/python/Makefile \
|
||||
docs/schemas/Makefile \
|
||||
gnulib/lib/Makefile \
|
||||
gnulib/tests/Makefile \
|
||||
libvirt.pc libvirt.spec mingw32-libvirt.spec \
|
||||
src/libvirt_sym.version \
|
||||
po/Makefile.in \
|
||||
include/libvirt/Makefile include/libvirt/libvirt.h \
|
||||
python/Makefile python/tests/Makefile \
|
||||
@ -1246,7 +1348,8 @@ AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
|
||||
tests/xmconfigdata/Makefile \
|
||||
tests/xencapsdata/Makefile \
|
||||
tests/confdata/Makefile \
|
||||
examples/domain-events/events-c/Makefile)
|
||||
examples/domain-events/events-c/Makefile \
|
||||
examples/hellolibvirt/Makefile)
|
||||
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Configuration summary])
|
||||
@ -1272,8 +1375,13 @@ AC_MSG_NOTICE([ FS: $with_storage_fs])
|
||||
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([ Disk: $with_storage_disk])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Security Drivers])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([ SELinux: $with_secdriver_selinux])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Driver Loadable Modules])
|
||||
AC_MSG_NOTICE([])
|
||||
if test "$with_driver_modules" != "no" ; then
|
||||
@ -1302,24 +1410,24 @@ else
|
||||
AC_MSG_NOTICE([ polkit: no])
|
||||
fi
|
||||
if test "$with_selinux" = "yes" ; then
|
||||
AC_MSG_NOTICE([ selinux: $SELINUX_CFLAGS $SELINUX_LIBS])
|
||||
AC_MSG_NOTICE([ selinux: $SELINUX_CFLAGS $SELINUX_LIBS])
|
||||
else
|
||||
AC_MSG_NOTICE([ selinux: no])
|
||||
AC_MSG_NOTICE([ selinux: no])
|
||||
fi
|
||||
if test "$with_numactl" = "yes" ; then
|
||||
AC_MSG_NOTICE([ numactl: $NUMACTL_CFLAGS $NUMACTL_LIBS])
|
||||
AC_MSG_NOTICE([ numactl: $NUMACTL_CFLAGS $NUMACTL_LIBS])
|
||||
else
|
||||
AC_MSG_NOTICE([ numactl: no])
|
||||
AC_MSG_NOTICE([ numactl: no])
|
||||
fi
|
||||
if test "$with_xen" = "yes" ; then
|
||||
AC_MSG_NOTICE([ xen: $XEN_CFLAGS $XEN_LIBS])
|
||||
AC_MSG_NOTICE([ xen: $XEN_CFLAGS $XEN_LIBS])
|
||||
else
|
||||
AC_MSG_NOTICE([ xen: no])
|
||||
AC_MSG_NOTICE([ xen: no])
|
||||
fi
|
||||
if test "$with_hal" = "yes" ; then
|
||||
AC_MSG_NOTICE([ hal: $HAL_CFLAGS $HAL_LIBS])
|
||||
AC_MSG_NOTICE([ hal: $HAL_CFLAGS $HAL_LIBS])
|
||||
else
|
||||
AC_MSG_NOTICE([ hal: no])
|
||||
AC_MSG_NOTICE([ hal: no])
|
||||
fi
|
||||
if test "$with_devkit" = "yes" ; then
|
||||
AC_MSG_NOTICE([ devkit: $DEVKIT_CFLAGS $DEVKIT_LIBS])
|
||||
@ -1329,12 +1437,12 @@ fi
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Test suite])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([ Coverage: $enable_coverage])
|
||||
AC_MSG_NOTICE([ Coverage: $enable_coverage])
|
||||
AC_MSG_NOTICE([ Alloc OOM: $enable_oom])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Miscellaneous])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([ Debug: $enable_debug])
|
||||
AC_MSG_NOTICE([ Debug: $enable_debug])
|
||||
AC_MSG_NOTICE([ Warnings: $enable_compile_warnings])
|
||||
AC_MSG_NOTICE([ Readline: $lv_use_readline])
|
||||
AC_MSG_NOTICE([])
|
||||
|
@ -26,4 +26,3 @@ the underlying acual implementation of the hypervisor calls.
|
||||
releases of the library.
|
||||
|
||||
Daniel Veillard <veillard@redhat.com>
|
||||
$Date$
|
||||
|
@ -1,5 +1,5 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
SUBDIRS= . examples devhelp
|
||||
SUBDIRS= schemas examples devhelp
|
||||
|
||||
# The directory containing the source code (if it contains documentation).
|
||||
DOC_SOURCE_DIR=../src
|
||||
@ -52,10 +52,6 @@ xml = \
|
||||
testnetpriv.xml \
|
||||
testnode.xml
|
||||
|
||||
rng = \
|
||||
libvirt.rng \
|
||||
network.rng
|
||||
|
||||
fig = \
|
||||
libvirt-net-logical.fig \
|
||||
libvirt-net-physical.fig
|
||||
@ -64,7 +60,7 @@ EXTRA_DIST= \
|
||||
libvirt-api.xml libvirt-refs.xml apibuild.py \
|
||||
site.xsl newapi.xsl news.xsl page.xsl ChangeLog.xsl \
|
||||
$(dot_html) $(dot_html_in) $(gif) $(apihtml) $(apipng) \
|
||||
$(xml) $(rng) $(fig) $(png) \
|
||||
$(xml) $(fig) $(png) \
|
||||
virsh.pod ChangeLog.awk
|
||||
|
||||
all: web $(top_builddir)/NEWS $(man_MANS)
|
||||
@ -130,9 +126,8 @@ rebuild: api all
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/libvir.html $(srcdir)/FAQ.html \
|
||||
$(srcdir)/redhat.gif $(srcdir)/Libxml2-Logo-90x34.gif \
|
||||
$(DESTDIR)$(HTML_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/FAQ.html \
|
||||
$(srcdir)/Libxml2-Logo-90x34.gif $(DESTDIR)$(HTML_DIR)
|
||||
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/html
|
||||
for h in $(apihtml); do \
|
||||
$(INSTALL) -m 0644 $(srcdir)/$$h $(DESTDIR)$(HTML_DIR)/html; done
|
||||
|
@ -27,6 +27,9 @@ included_files = {
|
||||
ignored_words = {
|
||||
"ATTRIBUTE_UNUSED": (0, "macro keyword"),
|
||||
"VIR_DEPRECATED": (0, "macro keyword"),
|
||||
"WINAPI": (0, "Windows keyword"),
|
||||
"__declspec": (3, "Windows keyword"),
|
||||
"__stdcall": (0, "Windows keyword"),
|
||||
}
|
||||
|
||||
ignored_functions = {
|
||||
|
@ -141,7 +141,7 @@
|
||||
</dd></dl>
|
||||
<h2>Monitoring plugins</h2>
|
||||
<dl><dt><a href="http://honk.sigxcpu.org/projects/libvirt/#munin">for munin</a></dt><dd>
|
||||
The plugins provided by Guido Günther allows to monitor various things
|
||||
The plugins provided by Guido Günther allow to monitor various things
|
||||
like network and block I/O with
|
||||
<a href="http://munin.projects.linpro.no/">Munin</a>.
|
||||
</dd><dt><a href="http://collectd.org/plugins/libvirt.shtml">for collectd</a></dt><dd>
|
||||
|
@ -107,7 +107,7 @@
|
||||
<dl>
|
||||
<dt><a href="http://honk.sigxcpu.org/projects/libvirt/#munin">for munin</a></dt>
|
||||
<dd>
|
||||
The plugins provided by Guido Günther allows to monitor various things
|
||||
The plugins provided by Guido Günther allow to monitor various things
|
||||
like network and block I/O with
|
||||
<a href="http://munin.projects.linpro.no/">Munin</a>.
|
||||
</dd>
|
||||
|
@ -47,6 +47,10 @@
|
||||
<div>
|
||||
<a title="Overview of the logical subsystems in the libvirt API" class="active" href="intro.html">Architecture</a>
|
||||
<ul class="l2"><li>
|
||||
<div>
|
||||
<a title="Terminology and goals of libvirt API" class="inactive" href="goals.html">Goals</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<span class="active">Domains</span>
|
||||
</div>
|
||||
|
@ -47,6 +47,10 @@
|
||||
<div>
|
||||
<a title="Overview of the logical subsystems in the libvirt API" class="active" href="intro.html">Architecture</a>
|
||||
<ul class="l2"><li>
|
||||
<div>
|
||||
<a title="Terminology and goals of libvirt API" class="inactive" href="goals.html">Goals</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Managing virtual machines" class="inactive" href="archdomain.html">Domains</a>
|
||||
</div>
|
||||
|
@ -47,6 +47,10 @@
|
||||
<div>
|
||||
<a title="Overview of the logical subsystems in the libvirt API" class="active" href="intro.html">Architecture</a>
|
||||
<ul class="l2"><li>
|
||||
<div>
|
||||
<a title="Terminology and goals of libvirt API" class="inactive" href="goals.html">Goals</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Managing virtual machines" class="inactive" href="archdomain.html">Domains</a>
|
||||
</div>
|
||||
|
@ -47,6 +47,10 @@
|
||||
<div>
|
||||
<a title="Overview of the logical subsystems in the libvirt API" class="active" href="intro.html">Architecture</a>
|
||||
<ul class="l2"><li>
|
||||
<div>
|
||||
<a title="Terminology and goals of libvirt API" class="inactive" href="goals.html">Goals</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Managing virtual machines" class="inactive" href="archdomain.html">Domains</a>
|
||||
</div>
|
||||
|
@ -58,6 +58,10 @@
|
||||
<div>
|
||||
<a title="Access the libvirt daemon from a native Windows client" class="inactive" href="windows.html">Windows port</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The library and the daemon logging support" class="inactive" href="logging.html">Logging</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
|
@ -58,6 +58,10 @@
|
||||
<div>
|
||||
<a title="Access the libvirt daemon from a native Windows client" class="inactive" href="windows.html">Windows port</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The library and the daemon logging support" class="inactive" href="logging.html">Logging</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
|
@ -1,7 +1,8 @@
|
||||
DEVHELP_DIR=$(datadir)/gtk-doc/html/libvirt
|
||||
HTML_FILES=index.html general.html $(HTML_MODULES)
|
||||
HTML_MODULES= \
|
||||
libvirt-libvirt.html
|
||||
libvirt-libvirt.html \
|
||||
libvirt-virterror.html
|
||||
|
||||
EXTRA_FORMAT= \
|
||||
home.png \
|
||||
@ -14,14 +15,15 @@ EXTRA_DIST=devhelp.xsl html.xsl libvirt.devhelp $(HTML_FILES) $(EXTRA_FORMAT)
|
||||
|
||||
all: libvirt.devhelp $(HTML_FILES)
|
||||
|
||||
libvirt.devhelp $(HTML_FILES): devhelp.xsl html.xsl $(top_srcdir)/docs/libvirt-api.xml
|
||||
libvirt.devhelp $(HTML_FILES): $(srcdir)/devhelp.xsl html.xsl $(top_srcdir)/docs/libvirt-api.xml
|
||||
-@(echo Rebuilding devhelp files)
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
$(XSLTPROC) --nonet -o $(srcdir)/libvirt.devhelp devhelp.xsl $(top_srcdir)/docs/libvirt-api.xml ; fi );
|
||||
$(XSLTPROC) --nonet -o libvirt.devhelp $(srcdir)/devhelp.xsl $(top_srcdir)/docs/libvirt-api.xml ; fi );
|
||||
|
||||
install-data-local:
|
||||
install-data-local: libvirt.devhelp $(HTML_FILES)
|
||||
$(mkinstalldirs) $(DESTDIR)$(DEVHELP_DIR)
|
||||
-@INSTALL@ -m 0644 libvirt.devhelp $(DESTDIR)$(DEVHELP_DIR)
|
||||
-@INSTALL@ -m 0644 $(EXTRA_FORMAT) $(DESTDIR)$(DEVHELP_DIR)
|
||||
-@INSTALL@ -m 0644 $(HTML_FILES) $(DESTDIR)$(DEVHELP_DIR)
|
||||
|
||||
-for file in $(EXTRA_FORMAT); do \
|
||||
@INSTALL@ -m 0644 $(srcdir)/$${file} $(DESTDIR)$(DEVHELP_DIR) ; \
|
||||
done
|
||||
|
@ -41,13 +41,16 @@
|
||||
<pre class="synopsis">#define <a href="#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a>(nodeinfo);
|
||||
#define <a href="#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a>;
|
||||
#define <a href="#VIR_USE_CPU">VIR_USE_CPU</a>(cpumap, cpu);
|
||||
#define <a href="#VIR_SECURITY_DOI_BUFLEN">VIR_SECURITY_DOI_BUFLEN</a>;
|
||||
#define <a href="#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a>(cpu);
|
||||
#define <a href="#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a>;
|
||||
#define <a href="#VIR_SECURITY_LABEL_BUFLEN">VIR_SECURITY_LABEL_BUFLEN</a>;
|
||||
#define <a href="#VIR_CPU_USABLE">VIR_CPU_USABLE</a>(cpumaps, maplen, vcpu, cpu);
|
||||
#define <a href="#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a>(cpumaps, maplen, vcpu, cpumap);
|
||||
#define <a href="#VIR_DOMAIN_SCHED_FIELD_LENGTH">VIR_DOMAIN_SCHED_FIELD_LENGTH</a>;
|
||||
#define <a href="#VIR_SECURITY_MODEL_BUFLEN">VIR_SECURITY_MODEL_BUFLEN</a>;
|
||||
#define <a href="#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a>;
|
||||
#define <a href="#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a>(cpumaps, maplen, vcpu);
|
||||
#define <a href="#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a>;
|
||||
#define <a href="#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a>(cpumap, cpu);
|
||||
typedef struct _virDomainBlockStats <a href="#virDomainBlockStatsStruct">virDomainBlockStatsStruct</a>;
|
||||
typedef enum <a href="#virDomainMigrateFlags">virDomainMigrateFlags</a>;
|
||||
@ -70,6 +73,7 @@ typedef <a href="libvirt-libvirt.html#virDomainInterfaceStatsStruct">virDomainIn
|
||||
typedef <a href="libvirt-libvirt.html#virConnectAuth">virConnectAuth</a> * <a href="#virConnectAuthPtr">virConnectAuthPtr</a>;
|
||||
typedef struct _virStorageVolInfo <a href="#virStorageVolInfo">virStorageVolInfo</a>;
|
||||
typedef enum <a href="#virSchedParameterType">virSchedParameterType</a>;
|
||||
typedef struct _virSecurityLabel <a href="#virSecurityLabel">virSecurityLabel</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virStorageVolInfo">virStorageVolInfo</a> * <a href="#virStorageVolInfoPtr">virStorageVolInfoPtr</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virConnectCredential">virConnectCredential</a> * <a href="#virConnectCredentialPtr">virConnectCredentialPtr</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virStoragePool">virStoragePool</a> * <a href="#virStoragePoolPtr">virStoragePoolPtr</a>;
|
||||
@ -92,6 +96,7 @@ typedef struct _virVcpuInfo <a href="#virVcpuInfo">virVcpuInfo</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virSchedParameter">virSchedParameter</a> * <a href="#virSchedParameterPtr">virSchedParameterPtr</a>;
|
||||
typedef struct _virConnectAuth <a href="#virConnectAuth">virConnectAuth</a>;
|
||||
typedef struct _virConnectCredential <a href="#virConnectCredential">virConnectCredential</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virSecurityModel">virSecurityModel</a> * <a href="#virSecurityModelPtr">virSecurityModelPtr</a>;
|
||||
typedef enum <a href="#virDomainEventSuspendedDetailType">virDomainEventSuspendedDetailType</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virVcpuInfo">virVcpuInfo</a> * <a href="#virVcpuInfoPtr">virVcpuInfoPtr</a>;
|
||||
typedef enum <a href="#virStoragePoolBuildFlags">virStoragePoolBuildFlags</a>;
|
||||
@ -103,6 +108,8 @@ typedef enum <a href="#virConnectCredentialType">virConnectCredentialType</a>;
|
||||
typedef enum <a href="#virStoragePoolState">virStoragePoolState</a>;
|
||||
typedef <a href="libvirt-libvirt.html#virStoragePoolInfo">virStoragePoolInfo</a> * <a href="#virStoragePoolInfoPtr">virStoragePoolInfoPtr</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>;
|
||||
char * <a href="#virStoragePoolGetXMLDesc">virStoragePoolGetXMLDesc</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags);
|
||||
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);
|
||||
@ -115,7 +122,8 @@ int <a href="#virNodeGetCellsFreeMemory">virNodeGetCellsFreeMemory</a> (<a href=
|
||||
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="#virStoragePoolSetAutostart">virStoragePoolSetAutostart</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> int autostart);
|
||||
<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> <a href="#virStorageVolCreateXML">virStorageVolCreateXML</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> const char * xmldesc, <br/> unsigned int flags);
|
||||
int <a href="#virNodeDeviceDettach">virNodeDeviceDettach</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
|
||||
int <a href="#virDomainGetSecurityLabel">virDomainGetSecurityLabel</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virSecurityLabelPtr">virSecurityLabelPtr</a> seclabel);
|
||||
int <a href="#virConnectDomainEventDeregister">virConnectDomainEventDeregister</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> <a href="libvirt-libvirt.html#virConnectDomainEventCallback">virConnectDomainEventCallback</a> cb);
|
||||
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);
|
||||
@ -125,17 +133,18 @@ int <a href="#virNetworkGetUUID">virNetworkGetUUID</a> (<a href="libvirt-libvir
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virStoragePoolGetConnect">virStoragePoolGetConnect</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
|
||||
int <a href="#virConnectGetVersion">virConnectGetVersion</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> unsigned long * hvVer);
|
||||
int <a href="#virDomainFree">virDomainFree</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virStorageVolRef">virStorageVolRef</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
|
||||
const char * <a href="#virStoragePoolGetName">virStoragePoolGetName</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
|
||||
int <a href="#virDomainSetAutostart">virDomainSetAutostart</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int autostart);
|
||||
<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolDefineXML">virStoragePoolDefineXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xml, <br/> unsigned int flags);
|
||||
<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);
|
||||
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainCreateLinux">virDomainCreateLinux</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xmlDesc, <br/> unsigned int flags);
|
||||
int <a href="#virNetworkCreate">virNetworkCreate</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
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#virDomainPtr">virDomainPtr</a> <a href="#virDomainMigrate">virDomainMigrate</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> dconn, <br/> unsigned long flags, <br/> const char * dname, <br/> const char * uri, <br/> unsigned long bandwidth);
|
||||
int <a href="#virDomainSuspend">virDomainSuspend</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virNetworkCreate">virNetworkCreate</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainCreateLinux">virDomainCreateLinux</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xmlDesc, <br/> unsigned int flags);
|
||||
char * <a href="#virNodeDeviceGetXMLDesc">virNodeDeviceGetXMLDesc</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev, <br/> unsigned int flags);
|
||||
typedef void <a href="#virEventUpdateHandleFunc">virEventUpdateHandleFunc</a> (int watch, <br/> int event);
|
||||
int <a href="#virDomainDestroy">virDomainDestroy</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
@ -154,6 +163,7 @@ char * <a href="#virNetworkGetBridgeName">virNetworkGetBridgeName</a> (<a href=
|
||||
char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br/> unsigned int flags);
|
||||
int <a href="#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virSchedParameterPtr">virSchedParameterPtr</a> params, <br/> int nparams);
|
||||
const char * <a href="#virConnectGetType">virConnectGetType</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> <a href="#virStorageVolCreateXML">virStorageVolCreateXML</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> const char * xmldesc, <br/> unsigned int flags);
|
||||
int <a href="#virDomainSave">virDomainSave</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * to);
|
||||
int <a href="#virDomainCreate">virDomainCreate</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
int <a href="#virConnectListDomains">virConnectListDomains</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> int * ids, <br/> int maxids);
|
||||
@ -178,6 +188,7 @@ int <a href="#virStoragePoolListVolumes">virStoragePoolListVolumes</a> (<a href=
|
||||
char * <a href="#virConnectGetHostname">virConnectGetHostname</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
typedef int <a href="#virEventRemoveTimeoutFunc">virEventRemoveTimeoutFunc</a> (int timer);
|
||||
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);
|
||||
const char * <a href="#virNetworkGetName">virNetworkGetName</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
@ -186,6 +197,7 @@ char * <a href="#virConnectGetCapabilities">virConnectGetCapabilities</a> (<a hr
|
||||
<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="#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);
|
||||
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);
|
||||
@ -196,6 +208,7 @@ int <a href="#virStorageVolFree">virStorageVolFree</a> (<a href="libvirt-libvir
|
||||
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);
|
||||
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="#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="#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);
|
||||
@ -203,6 +216,7 @@ int <a href="#virDomainGetVcpus">virDomainGetVcpus</a> (<a href="libvirt-libvir
|
||||
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);
|
||||
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="#virNetworkRef">virNetworkRef</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
|
||||
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="#virStorageVolLookupByKey">virStorageVolLookupByKey</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * key);
|
||||
@ -213,9 +227,11 @@ int <a href="#virNetworkGetUUIDString">virNetworkGetUUIDString</a> (<a href="li
|
||||
int <a href="#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
typedef void <a href="#virEventHandleCallback">virEventHandleCallback</a> (int watch, <br/> int fd, <br/> int events, <br/> void * opaque);
|
||||
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);
|
||||
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);
|
||||
typedef int <a href="#virConnectAuthCallbackPtr">virConnectAuthCallbackPtr</a> (<a href="libvirt-libvirt.html#virConnectCredentialPtr">virConnectCredentialPtr</a> cred, <br/> unsigned int ncred, <br/> void * cbdata);
|
||||
int <a href="#virDomainAttachDevice">virDomainAttachDevice</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml);
|
||||
@ -244,7 +260,9 @@ int <a href="#virConnectNumOfDefinedStoragePools">virConnectNumOfDefinedStorageP
|
||||
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);
|
||||
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainCreateXML">virDomainCreateXML</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xmlDesc, <br/> unsigned int flags);
|
||||
int <a href="#virNodeDeviceRef">virNodeDeviceRef</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
|
||||
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="#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);
|
||||
unsigned int <a href="#virDomainGetID">virDomainGetID</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
|
||||
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);
|
||||
@ -285,6 +303,18 @@ int <a href="#virConnectListNetworks">virConnectListNetworks</a> (<a href="libv
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="VIR_NODEINFO_MAXCPUS">Macro </a>VIR_NODEINFO_MAXCPUS</h3><pre class="programlisting">#define <a href="#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a>(nodeinfo);
|
||||
</pre><p>This macro is to calculate the total number of CPUs supported but not necessary active in the host.</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>nodeinfo</tt></i>:</span></td><td><a href="libvirt-libvirt.html#virNodeInfo">virNodeInfo</a> instance</td></tr></tbody></table></div>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="VIR_SECURITY_DOI_BUFLEN">Macro </a>VIR_SECURITY_DOI_BUFLEN</h3><pre class="programlisting">#define <a href="#VIR_SECURITY_DOI_BUFLEN">VIR_SECURITY_DOI_BUFLEN</a>;
|
||||
</pre><p>Macro providing the maximum length of the <a href="libvirt-libvirt.html#virSecurityModel">virSecurityModel</a> doi string.</p>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="VIR_SECURITY_LABEL_BUFLEN">Macro </a>VIR_SECURITY_LABEL_BUFLEN</h3><pre class="programlisting">#define <a href="#VIR_SECURITY_LABEL_BUFLEN">VIR_SECURITY_LABEL_BUFLEN</a>;
|
||||
</pre><p>Macro providing the maximum length of the <a href="libvirt-libvirt.html#virSecurityLabel">virSecurityLabel</a> label string. Note that this value is based on that used by Labeled NFS.</p>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="VIR_SECURITY_MODEL_BUFLEN">Macro </a>VIR_SECURITY_MODEL_BUFLEN</h3><pre class="programlisting">#define <a href="#VIR_SECURITY_MODEL_BUFLEN">VIR_SECURITY_MODEL_BUFLEN</a>;
|
||||
</pre><p>Macro providing the maximum length of the <a href="libvirt-libvirt.html#virSecurityModel">virSecurityModel</a> model string.</p>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="VIR_UNUSE_CPU">Macro </a>VIR_UNUSE_CPU</h3><pre class="programlisting">#define <a href="#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a>(cpumap, cpu);
|
||||
@ -576,6 +606,26 @@ 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="virSecurityLabel">Structure </a>virSecurityLabel</h3><pre class="programlisting">struct _virSecurityLabel {
|
||||
The content of this structure is not made public by the API.
|
||||
} virSecurityLabel;
|
||||
</pre><p/>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecurityLabelPtr">Typedef </a>virSecurityLabelPtr</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecurityLabel">virSecurityLabel</a> * virSecurityLabelPtr;
|
||||
</pre><p>a <a href="libvirt-libvirt.html#virSecurityLabelPtr">virSecurityLabelPtr</a> is a pointer to a virSecurityLabel.</p>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecurityModel">Structure </a>virSecurityModel</h3><pre class="programlisting">struct _virSecurityModel {
|
||||
The content of this structure is not made public by the API.
|
||||
} virSecurityModel;
|
||||
</pre><p/>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSecurityModelPtr">Typedef </a>virSecurityModelPtr</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virSecurityModel">virSecurityModel</a> * virSecurityModelPtr;
|
||||
</pre><p>a <a href="libvirt-libvirt.html#virSecurityModelPtr">virSecurityModelPtr</a> is a pointer to a virSecurityModel.</p>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePool">Structure </a>virStoragePool</h3><pre class="programlisting">struct _virStoragePool {
|
||||
@ -739,8 +789,8 @@ 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 connection</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling domain events</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="virConnectDomainEventRegister"/>virConnectDomainEventRegister ()</h3><pre class="programlisting">int virConnectDomainEventRegister (<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)<br/>
|
||||
</pre><p>Adds a Domain Event Callback. Registering for a domain callback will enable delivery of the events</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 connection</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling domain events</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>opaque data to pass on to the callback</td></tr><tr><td><span class="term"><i><tt>freecb</tt></i>:</span></td><td>optional function to deallocate opaque when not used anymore</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>
|
||||
</pre><p>Adds a Domain Event Callback. Registering for a domain callback will enable delivery of the events The <a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> object handle passed into the callback upon delivery of an event is only valid for the duration of execution of the callback. If the callback wishes to keep the domain object after the callback</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 connection</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling domain events</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>opaque data to pass on to the callback</td></tr><tr><td><span class="term"><i><tt>freecb</tt></i>:</span></td><td>optional function to deallocate opaque when not used anymore</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>it shall take a reference to it, by calling virDomainRef. The reference can be released once the object is no longer required by calling virDomainFree. Returns 0 on success, -1 on failure</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectFindStoragePoolSources"/>virConnectFindStoragePoolSources ()</h3><pre class="programlisting">char * virConnectFindStoragePoolSources (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * type, <br/> const char * srcSpec, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Talks to a storage backend and attempts to auto-discover the set of available storage pool sources. e.g. For iSCSI this would be a set of iSCSI targets. For NFS this would be a list of exported paths. The srcSpec (optional for some storage pool types, e.g. local ones) is an instance of the storage pool's source element specifying where to look for the pools. srcSpec is not required for some types (e.g., those querying local storage resources only)</p>
|
||||
@ -829,6 +879,10 @@ The content of this structure is not made public by the API.
|
||||
<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>
|
||||
<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/>
|
||||
</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/></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainAttachDevice"/>virDomainAttachDevice ()</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>
|
||||
@ -913,6 +967,10 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainGetSchedulerType"/>virDomainGetSchedulerType ()</h3><pre class="programlisting">char * virDomainGetSchedulerType (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int * nparams)<br/>
|
||||
</pre><p>Get the scheduler type.</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>nparams</tt></i>:</span></td><td>number of scheduler parameters(return value)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL in case of error. The caller must free the returned string.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainGetSecurityLabel"/>virDomainGetSecurityLabel ()</h3><pre class="programlisting">int virDomainGetSecurityLabel (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virSecurityLabelPtr">virSecurityLabelPtr</a> seclabel)<br/>
|
||||
</pre><p>Extract security label of an active domain.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>seclabel</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#virSecurityLabel">virSecurityLabel</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, and -2 if the operation is not supported (caller decides if that's an error).</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainGetUUID"/>virDomainGetUUID ()</h3><pre class="programlisting">int virDomainGetUUID (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned char * uuid)<br/>
|
||||
</pre><p>Get the UUID for a domain</p>
|
||||
@ -965,6 +1023,10 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainReboot"/>virDomainReboot ()</h3><pre class="programlisting">int virDomainReboot (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Reboot a domain, the domain object is still usable there after but the domain OS is being stopped for a restart. Note that the guest OS may ignore the request.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags for the reboot operation, 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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainRef"/>virDomainRef ()</h3><pre class="programlisting">int virDomainRef (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br/>
|
||||
</pre><p>Increment the reference count on the domain. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virDomainFree">virDomainFree</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 domain would increment the reference count.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainRestore"/>virDomainRestore ()</h3><pre class="programlisting">int virDomainRestore (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * from)<br/>
|
||||
</pre><p>This method will restore a domain saved to disk by virDomainSave().</p>
|
||||
@ -1081,6 +1143,10 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virNetworkLookupByUUIDString"/>virNetworkLookupByUUIDString ()</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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNetworkRef"/>virNetworkRef ()</h3><pre class="programlisting">int virNetworkRef (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br/>
|
||||
</pre><p>Increment the reference count on the network. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virNetworkFree">virNetworkFree</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 network would increment the reference count.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNetworkSetAutostart"/>virNetworkSetAutostart ()</h3><pre class="programlisting">int virNetworkSetAutostart (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br/> int autostart)<br/>
|
||||
</pre><p>Configure the network to be automatically started when the host machine boots.</p>
|
||||
@ -1089,6 +1155,10 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virNetworkUndefine"/>virNetworkUndefine ()</h3><pre class="programlisting">int virNetworkUndefine (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br/>
|
||||
</pre><p>Undefine a network but does not stop it if it is running</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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeDeviceDettach"/>virNodeDeviceDettach ()</h3><pre class="programlisting">int virNodeDeviceDettach (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br/>
|
||||
</pre><p/>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeDeviceFree"/>virNodeDeviceFree ()</h3><pre class="programlisting">int virNodeDeviceFree (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br/>
|
||||
</pre><p>Drops a reference to the node device, freeing it if this was the last reference.</p>
|
||||
@ -1117,6 +1187,18 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeDeviceNumOfCaps"/>virNodeDeviceNumOfCaps ()</h3><pre class="programlisting">int virNodeDeviceNumOfCaps (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br/>
|
||||
</pre><p>Accessor for the number of capabilities supported by the device.</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 device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of capabilities supported by the device.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeDeviceReAttach"/>virNodeDeviceReAttach ()</h3><pre class="programlisting">int virNodeDeviceReAttach (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br/>
|
||||
</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/></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeDeviceRef"/>virNodeDeviceRef ()</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/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeDeviceReset"/>virNodeDeviceReset ()</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/></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>
|
||||
@ -1129,6 +1211,10 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeGetInfo"/>virNodeGetInfo ()</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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeGetSecurityModel"/>virNodeGetSecurityModel ()</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.</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, and -2 if the operation is not supported (caller decides if that's an error).</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeListDevices"/>virNodeListDevices ()</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>
|
||||
@ -1217,6 +1303,10 @@ The content of this structure is not made public by the API.
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolNumOfVolumes"/>virStoragePoolNumOfVolumes ()</h3><pre class="programlisting">int virStoragePoolNumOfVolumes (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br/>
|
||||
</pre><p>Fetch the number of storage volumes within a 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>the number of storage pools, or -1 on failure</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolRef"/>virStoragePoolRef ()</h3><pre class="programlisting">int virStoragePoolRef (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br/>
|
||||
</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/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolRefresh"/>virStoragePoolRefresh ()</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>
|
||||
@ -1239,7 +1329,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>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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStorageVolFree"/>virStorageVolFree ()</h3><pre class="programlisting">int virStorageVolFree (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br/>
|
||||
</pre><p>Release the storage volume handle. The underlying storage volume contains to exist</p>
|
||||
</pre><p>Release the storage volume handle. The underlying storage volume continues to exist.</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>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="virStorageVolGetConnect"/>virStorageVolGetConnect ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virStorageVolGetConnect (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br/>
|
||||
@ -1278,6 +1368,10 @@ The content of this structure is not made public by the API.
|
||||
</pre><p>Fetch a pointer to a storage volume based on its locally (host) unique path</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>path</tt></i>:</span></td><td>locally unique path</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a storage volume, or NULL if not found / error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStorageVolRef"/>virStorageVolRef ()</h3><pre class="programlisting">int virStorageVolRef (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br/>
|
||||
</pre><p>Increment the reference count on the vol. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virStorageVolFree">virStorageVolFree</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 vol would increment the reference count.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
@ -43,6 +43,7 @@ typedef enum <a href="#virErrorLevel">virErrorLevel</a>;
|
||||
typedef enum <a href="#virErrorDomain">virErrorDomain</a>;
|
||||
typedef enum <a href="#virErrorNumber">virErrorNumber</a>;
|
||||
typedef struct _virError <a href="#virError">virError</a>;
|
||||
void <a href="#virFreeError">virFreeError</a> (<a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> err);
|
||||
int <a href="#virCopyLastError">virCopyLastError</a> (<a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> to);
|
||||
void <a href="#virConnSetErrorFunc">virConnSetErrorFunc</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> void * userData, <br/> <a href="libvirt-virterror.html#virErrorFunc">virErrorFunc</a> handler);
|
||||
void <a href="#virResetLastError">virResetLastError</a> (void);
|
||||
@ -54,6 +55,7 @@ void <a href="#virDefaultErrorFunc">virDefaultErrorFunc</a> (<a href="libvirt-v
|
||||
void <a href="#virSetErrorFunc">virSetErrorFunc</a> (void * userData, <br/> <a href="libvirt-virterror.html#virErrorFunc">virErrorFunc</a> handler);
|
||||
int <a href="#virConnCopyLastError">virConnCopyLastError</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> <a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> to);
|
||||
void <a href="#virConnResetLastError">virConnResetLastError</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
|
||||
<a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> <a href="#virSaveLastError">virSaveLastError</a> (void);
|
||||
</pre>
|
||||
</div>
|
||||
<div class="refsect1" lang="en">
|
||||
@ -103,7 +105,8 @@ void <a href="#virConnResetLastError">virConnResetLastError</a> (<a href="libvi
|
||||
<a name="VIR_FROM_DOMAIN">VIR_FROM_DOMAIN</a> = 20 /* Error from domain config */
|
||||
<a name="VIR_FROM_UML">VIR_FROM_UML</a> = 21 /* Error at the UML driver */
|
||||
<a name="VIR_FROM_NODEDEV">VIR_FROM_NODEDEV</a> = 22 /* Error from node device monitor */
|
||||
<a name="VIR_FROM_XEN_INOTIFY">VIR_FROM_XEN_INOTIFY</a> = 23 /* Error from xen inotify layer */
|
||||
<a name="VIR_FROM_XEN_INOTIFY">VIR_FROM_XEN_INOTIFY</a> = 23 /* Error from xen inotify layer */
|
||||
<a name="VIR_FROM_SECURITY">VIR_FROM_SECURITY</a> = 24 /* Error from security framework */
|
||||
};
|
||||
</pre><p/>
|
||||
</div>
|
||||
@ -170,7 +173,8 @@ void <a href="#virConnResetLastError">virConnResetLastError</a> (<a href="libvi
|
||||
<a name="VIR_ERR_NO_STORAGE_VOL">VIR_ERR_NO_STORAGE_VOL</a> = 50 /* storage pool not found */
|
||||
<a name="VIR_WAR_NO_NODE">VIR_WAR_NO_NODE</a> = 51 /* failed to start node driver */
|
||||
<a name="VIR_ERR_INVALID_NODE_DEVICE">VIR_ERR_INVALID_NODE_DEVICE</a> = 52 /* invalid node device object */
|
||||
<a name="VIR_ERR_NO_NODE_DEVICE">VIR_ERR_NO_NODE_DEVICE</a> = 53 /* node device not found */
|
||||
<a name="VIR_ERR_NO_NODE_DEVICE">VIR_ERR_NO_NODE_DEVICE</a> = 53 /* node device not found */
|
||||
<a name="VIR_ERR_NO_SECURITY_MODEL">VIR_ERR_NO_SECURITY_MODEL</a> = 54 /* security model not found */
|
||||
};
|
||||
</pre><p/>
|
||||
</div>
|
||||
@ -184,15 +188,15 @@ void <a href="#virConnResetLastError">virConnResetLastError</a> (<a href="libvi
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>userData</tt></i>:</span></td><td>user provided data for the error callback</td></tr><tr><td><span class="term"><i><tt>error</tt></i>:</span></td><td>the error being raised.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnCopyLastError"/>virConnCopyLastError ()</h3><pre class="programlisting">int virConnCopyLastError (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> <a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> to)<br/>
|
||||
</pre><p>Copy the content of the last error caught on that connection One will need to free the result with virResetError()</p>
|
||||
</pre><p>Copy the content of the last error caught on that connection This method is not protected against access from multiple threads. In a multi-threaded application, always use the global virGetLastError() API which is backed by thread local storage. If the connection object was discovered to be invalid by an API call, then the error will be reported against the global error object. Since 0.6.0, all errors reported in the per-connection object are also duplicated in the global error object. As such an application can always use virGetLastError(). This method remains for backwards compatability. One will need to free the result with virResetError()</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>to</tt></i>:</span></td><td>target to receive the copy</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if no error was found and the error code otherwise and -1 in case of parameter error.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnGetLastError"/>virConnGetLastError ()</h3><pre class="programlisting"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> virConnGetLastError (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Provide a pointer to the last error caught on that connection Simpler but may not be suitable for multithreaded accesses, in which case use virConnCopyLastError()</p>
|
||||
</pre><p>Provide a pointer to the last error caught on that connection This method is not protected against access from multiple threads. In a multi-threaded application, always use the global virGetLastError() API which is backed by thread local storage. If the connection object was discovered to be invalid by an API call, then the error will be reported against the global error object. Since 0.6.0, all errors reported in the per-connection object are also duplicated in the global error object. As such an application can always use virGetLastError(). This method remains for backwards compatability.</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>a pointer to the last error or NULL if none occurred.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnResetLastError"/>virConnResetLastError ()</h3><pre class="programlisting">void virConnResetLastError (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Reset the last error caught on that connection</p>
|
||||
</pre><p>The error object is kept in thread local storage, so separate threads can safely access this concurrently. Reset the last error caught on that 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></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnSetErrorFunc"/>virConnSetErrorFunc ()</h3><pre class="programlisting">void virConnSetErrorFunc (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> void * userData, <br/> <a href="libvirt-virterror.html#virErrorFunc">virErrorFunc</a> handler)<br/>
|
||||
@ -200,15 +204,19 @@ void <a href="#virConnResetLastError">virConnResetLastError</a> (<a href="libvi
|
||||
<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>userData</tt></i>:</span></td><td>pointer to the user data provided in the handler callback</td></tr><tr><td><span class="term"><i><tt>handler</tt></i>:</span></td><td>the function to get called in case of error or NULL</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virCopyLastError"/>virCopyLastError ()</h3><pre class="programlisting">int virCopyLastError (<a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> to)<br/>
|
||||
</pre><p>Copy the content of the last error caught at the library level One will need to free the result with virResetError()</p>
|
||||
</pre><p>Copy the content of the last error caught at the library level The error object is kept in thread local storage, so separate threads can safely access this concurrently. One will need to free the result with virResetError()</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>to</tt></i>:</span></td><td>target to receive the copy</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if no error was found and the error code otherwise and -1 in case of parameter error.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDefaultErrorFunc"/>virDefaultErrorFunc ()</h3><pre class="programlisting">void virDefaultErrorFunc (<a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> err)<br/>
|
||||
</pre><p>Default routine reporting an error to stderr.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>err</tt></i>:</span></td><td>pointer to the error.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virFreeError"/>virFreeError ()</h3><pre class="programlisting">void virFreeError (<a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> err)<br/>
|
||||
</pre><p>Resets and frees the given error.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>err</tt></i>:</span></td><td>error to free</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virGetLastError"/>virGetLastError ()</h3><pre class="programlisting"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> virGetLastError (void)<br/>
|
||||
</pre><p>Provide a pointer to the last error caught at the library level Simpler but may not be suitable for multithreaded accesses, in which case use virCopyLastError()</p>
|
||||
</pre><p>Provide a pointer to the last error caught at the library level The error object is kept in thread local storage, so separate threads can safely access this concurrently.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the last error or NULL if none occurred.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virResetError"/>virResetError ()</h3><pre class="programlisting">void virResetError (<a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> err)<br/>
|
||||
@ -216,8 +224,12 @@ void <a href="#virConnResetLastError">virConnResetLastError</a> (<a href="libvi
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>err</tt></i>:</span></td><td>pointer to the <a href="libvirt-virterror.html#virError">virError</a> to clean up</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virResetLastError"/>virResetLastError ()</h3><pre class="programlisting">void virResetLastError (void)<br/>
|
||||
</pre><p>Reset the last error caught at the library level.</p>
|
||||
</pre><p>Reset the last error caught at the library level. The error object is kept in thread local storage, so separate threads can safely access this concurrently, only resetting their own error object.</p>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSaveLastError"/>virSaveLastError ()</h3><pre class="programlisting"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> virSaveLastError (void)<br/>
|
||||
</pre><p>Save the last error into a new error object.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the copied error or NULL if allocation failed. It is the caller's responsibility to free the error with virFreeError().</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virSetErrorFunc"/>virSetErrorFunc ()</h3><pre class="programlisting">void virSetErrorFunc (void * userData, <br/> <a href="libvirt-virterror.html#virErrorFunc">virErrorFunc</a> handler)<br/>
|
||||
</pre><p>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.</p>
|
||||
|
@ -142,6 +142,7 @@
|
||||
</p>
|
||||
<pre>
|
||||
openvz:///system (local access)
|
||||
openvz+unix:///system (local access)
|
||||
openvz://example.com/system (remote access, TLS/x509)
|
||||
openvz+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
openvz+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
<pre>
|
||||
openvz:///system (local access)
|
||||
openvz+unix:///system (local access)
|
||||
openvz://example.com/system (remote access, TLS/x509)
|
||||
openvz+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
openvz+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
|
@ -149,6 +149,23 @@
|
||||
node. If both are found, then Xen paravirtualized guests can be run using
|
||||
the KVM hardware acceleration.
|
||||
</li></ul>
|
||||
<h2>Connections to QEMU driver</h2>
|
||||
<p>
|
||||
The libvirt QEMU driver is a multi-instance driver, providing a single
|
||||
system wide privileged driver (the "system" instance), and per-user
|
||||
unprivileged drivers (the "session" instance). The of the driver protocol
|
||||
is "qemu". Some example conection URIs for the libvirt driver are:
|
||||
</p>
|
||||
<pre>
|
||||
qemu:///session (local access to per-user instance)
|
||||
qemu+unix:///session (local access to per-user instance)
|
||||
|
||||
qemu:///system (local access to system instance)
|
||||
qemu+unix:///system (local access to system instance)
|
||||
qemu://example.com/system (remote access, TLS/x509)
|
||||
qemu+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
qemu+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
<h2>
|
||||
<a name="xmlconfig" id="xmlconfig">Example domain XML config</a>
|
||||
</h2>
|
||||
@ -200,7 +217,7 @@
|
||||
<source network='default'/>
|
||||
<mac address='24:42:53:21:52:45'/>
|
||||
</interface>
|
||||
<graphics type='vnc' port='-1'/>
|
||||
<graphics type='vnc' port='-1' keymap='de'/>
|
||||
</devices>
|
||||
</domain></pre>
|
||||
<h3>Xen paravirtualized guests with hardware acceleration</h3>
|
||||
|
@ -32,6 +32,26 @@
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Connections to QEMU driver</h2>
|
||||
|
||||
<p>
|
||||
The libvirt QEMU driver is a multi-instance driver, providing a single
|
||||
system wide privileged driver (the "system" instance), and per-user
|
||||
unprivileged drivers (the "session" instance). The of the driver protocol
|
||||
is "qemu". Some example conection URIs for the libvirt driver are:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
qemu:///session (local access to per-user instance)
|
||||
qemu+unix:///session (local access to per-user instance)
|
||||
|
||||
qemu:///system (local access to system instance)
|
||||
qemu+unix:///system (local access to system instance)
|
||||
qemu://example.com/system (remote access, TLS/x509)
|
||||
qemu+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
qemu+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
|
||||
<h2><a name="xmlconfig">Example domain XML config</a></h2>
|
||||
|
||||
<h3>QEMU emulated guest on x86_64</h3>
|
||||
@ -85,7 +105,7 @@
|
||||
<source network='default'/>
|
||||
<mac address='24:42:53:21:52:45'/>
|
||||
</interface>
|
||||
<graphics type='vnc' port='-1'/>
|
||||
<graphics type='vnc' port='-1' keymap='de'/>
|
||||
</devices>
|
||||
</domain></pre>
|
||||
|
||||
|
@ -126,6 +126,22 @@
|
||||
</div>
|
||||
<div id="content">
|
||||
<h1>Test "mock" driver</h1>
|
||||
<h2>Connections to Test driver</h2>
|
||||
<p>
|
||||
The libvirt Test driver is a per-process fake hypervisor driver,
|
||||
with a driver name of 'test'. The driver maintains all its state
|
||||
in memory. It can start with a pre-configured default config, or
|
||||
be given a path to a alternate config. Some example conection URIs
|
||||
for the libvirt driver are:
|
||||
</p>
|
||||
<pre>
|
||||
test:///default (local access, default config)
|
||||
test:///path/to/driver/config.xml (local access, custom config)
|
||||
test+unix:///default (local access, default config, via daemon)
|
||||
test://example.com/default (remote access, TLS/x509)
|
||||
test+tcp://example.com/default (remote access, SASl/Kerberos)
|
||||
test+ssh://root@example.com/default (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
|
@ -1,5 +1,25 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1>Test "mock" driver</h1>
|
||||
|
||||
<h2>Connections to Test driver</h2>
|
||||
|
||||
<p>
|
||||
The libvirt Test driver is a per-process fake hypervisor driver,
|
||||
with a driver name of 'test'. The driver maintains all its state
|
||||
in memory. It can start with a pre-configured default config, or
|
||||
be given a path to a alternate config. Some example conection URIs
|
||||
for the libvirt driver are:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
test:///default (local access, default config)
|
||||
test:///path/to/driver/config.xml (local access, custom config)
|
||||
test+unix:///default (local access, default config, via daemon)
|
||||
test://example.com/default (remote access, TLS/x509)
|
||||
test+tcp://example.com/default (remote access, SASl/Kerberos)
|
||||
test+ssh://root@example.com/default (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -146,8 +146,11 @@
|
||||
URIs are
|
||||
</p>
|
||||
<pre>
|
||||
uml:///system (local access, system instance)
|
||||
uml:///session (local access, session instance)
|
||||
uml:///session (local access to per-user instance)
|
||||
uml+unix:///session (local access to per-user instance)
|
||||
|
||||
uml:///system (local access to system instance)
|
||||
uml+unix:///system (local access to system instance)
|
||||
uml://example.com/system (remote access, TLS/x509)
|
||||
uml+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
uml+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
|
@ -25,8 +25,11 @@
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
uml:///system (local access, system instance)
|
||||
uml:///session (local access, session instance)
|
||||
uml:///session (local access to per-user instance)
|
||||
uml+unix:///session (local access to per-user instance)
|
||||
|
||||
uml:///system (local access to system instance)
|
||||
uml+unix:///system (local access to system instance)
|
||||
uml://example.com/system (remote access, TLS/x509)
|
||||
uml+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
uml+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
|
@ -159,6 +159,19 @@
|
||||
the <code>/etc/xen</code> directory. It is important not to place
|
||||
any other non-config files in this directory.
|
||||
</li></ul>
|
||||
<h2>Connections to Xen driver</h2>
|
||||
<p>
|
||||
The libvirt Xen driver is a single-instance privileged driver,
|
||||
with a driver name of 'xen'. Some example conection URIs for
|
||||
the libvirt driver are:
|
||||
</p>
|
||||
<pre>
|
||||
xen:/// (local access, direct)
|
||||
xen+unix:/// (local access, via daemon)
|
||||
xen://example.com/ (remote access, TLS/x509)
|
||||
xen+tcp://example.com/ (remote access, SASl/Kerberos)
|
||||
xen+ssh://root@example.com/ (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
<h2>
|
||||
<a name="xmlconfig" id="xmlconfig">Example domain XML config</a>
|
||||
</h2>
|
||||
|
@ -44,6 +44,23 @@
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Connections to Xen driver</h2>
|
||||
|
||||
<p>
|
||||
The libvirt Xen driver is a single-instance privileged driver,
|
||||
with a driver name of 'xen'. Some example conection URIs for
|
||||
the libvirt driver are:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
xen:/// (local access, direct)
|
||||
xen+unix:/// (local access, via daemon)
|
||||
xen://example.com/ (remote access, TLS/x509)
|
||||
xen+tcp://example.com/ (remote access, SASl/Kerberos)
|
||||
xen+ssh://root@example.com/ (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
|
||||
|
||||
<h2><a name="xmlconfig">Example domain XML config</a></h2>
|
||||
|
||||
<p>
|
||||
|
@ -1,4 +1,3 @@
|
||||
*.exe
|
||||
.memdump
|
||||
Makefile.in
|
||||
Makefile
|
||||
|
1
docs/examples/.gitignore
vendored
1
docs/examples/.gitignore
vendored
@ -1,4 +1,3 @@
|
||||
*.exe
|
||||
.memdump
|
||||
Makefile.in
|
||||
Makefile
|
||||
|
@ -20,7 +20,7 @@ index.html: examples.xml examples.xsl $(top_srcdir)/docs/site.xsl
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml \
|
||||
$(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
|
||||
$(srcdir)/*.xsl $(DESTDIR)$(HTML_DIR)
|
||||
|
||||
EXTRA_DIST=examples.xsl index.py examples.xml
|
||||
|
||||
|
@ -218,8 +218,6 @@ def dump_sections(output):
|
||||
def dump_Makefile():
|
||||
for file in glob.glob('*.xml'):
|
||||
extras.append(file)
|
||||
for file in glob.glob('*.res'):
|
||||
extras.append(file)
|
||||
Makefile="""# -*- buffer-read-only: t -*- vi: set ro:
|
||||
# Beware this is autogenerated by index.py
|
||||
SUBDIRS=python
|
||||
@ -243,7 +241,7 @@ index.html: examples.xml examples.xsl $(top_srcdir)/docs/site.xsl
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml \\
|
||||
$(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
|
||||
$(srcdir)/*.xsl $(DESTDIR)$(HTML_DIR)
|
||||
|
||||
"""
|
||||
EXTRA_DIST= string.join(extras, ' ')
|
||||
|
@ -140,7 +140,7 @@
|
||||
<ul><li>
|
||||
<a href="#elementsDisks">Hard drives, floppy disks, CDROMs</a>
|
||||
</li><li>
|
||||
<a href="#elementsUSB">USB devices</a>
|
||||
<a href="#elementsUSB">USB and PCI devices</a>
|
||||
</li><li>
|
||||
<a href="#elementsNICS">Network interfaces</a>
|
||||
<ul><li>
|
||||
@ -396,7 +396,7 @@
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
<clock sync="localtime"/>
|
||||
<clock offset="localtime"/>
|
||||
...</pre>
|
||||
<dl><dt><code>clock</code></dt><dd>The <code>sync</code> attribute takes either "utc" or
|
||||
"localtime" to specify how the guest clock is initialized
|
||||
@ -464,11 +464,12 @@
|
||||
attribute provides the sub-type. <span class="since">Since 0.1.8</span>
|
||||
</dd></dl>
|
||||
<h4>
|
||||
<a name="elementsUSB" id="elementsUSB">USB devices</a>
|
||||
<a name="elementsUSB" id="elementsUSB">USB and PCI devices</a>
|
||||
</h4>
|
||||
<p>
|
||||
USB devices attached to the host can be passed through to the guest using
|
||||
the <code>hostdev</code> element. <span class="since">since after 0.4.4</span>
|
||||
USB and PCI devices attached to the host can be passed through to the guest using
|
||||
the <code>hostdev</code> element. <span class="since">since after
|
||||
0.4.4 for USB and 0.6.0 for PCI (KVM only)</span>:
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
@ -477,22 +478,43 @@
|
||||
<vendor id='0x1234'/>
|
||||
<product id='0xbeef'/>
|
||||
</source>
|
||||
</disk>
|
||||
</hostdev>
|
||||
...</pre>
|
||||
<p>or:</p>
|
||||
<pre>
|
||||
...
|
||||
<hostdev mode='subsystem' type='pci'>
|
||||
<source>
|
||||
<address bus='0x06' slot='0x02' function='0x0'/>
|
||||
</source>
|
||||
</hostdev>
|
||||
...</pre>
|
||||
<dl><dt><code>hostdev</code></dt><dd>The <code>hostdev</code> element is the main container for describing
|
||||
host devices. For usb device passthrough <code>mode</code> is always
|
||||
"subsystem" and <code>type</code> is "usb".
|
||||
"subsystem" and <code>type</code> is "usb" for an USB device and "pci"
|
||||
for a PCI device..
|
||||
</dd><dt><code>source</code></dt><dd>The source element describes the device as seen from the host.
|
||||
The USB device can either be addressed by vendor / product id using the
|
||||
<code>vendor</code> and <code>product</code> elements or by the device's
|
||||
address on the hosts using the <code>address</code> element.</dd><dt><code>vendor</code>, <code>product</code></dt><dd>The <code>vendor</code> and <code>product</code> elements each have an
|
||||
address on the hosts using the <code>address</code> element.
|
||||
PCI devices on the other hand can only be described by their
|
||||
<code>address</code></dd><dt><code>vendor</code>, <code>product</code></dt><dd>The <code>vendor</code> and <code>product</code> elements each have an
|
||||
<code>id</code> attribute that specifies the USB vendor and product id.
|
||||
The ids can be given in decimal, hexadecimal (starting with 0x) or
|
||||
octal (starting with 0) form.</dd><dt><code>address</code></dt><dd>The <code>address</code> element has a <code>bus</code> and
|
||||
<code>device</code> attribute to specify the USB bus and device number
|
||||
the device appears at on the host. The values of these attributes can
|
||||
be given in decimal, hexadecimal (starting with 0x) or octal (starting
|
||||
with 0) form.</dd></dl>
|
||||
octal (starting with 0) form.</dd><dt><code>address</code></dt><dd>The <code>address</code> element for USB devices has a
|
||||
<code>bus</code> and <code>device</code> attribute to specify the
|
||||
USB bus and device number the device appears at on the host.
|
||||
The values of these attributes can be given in decimal, hexadecimal
|
||||
(starting with 0x) or octal (starting with 0) form.
|
||||
For PCI devices the element carries 3 attributes allowing to designate
|
||||
the device as can be found with the <code>lspci</code> or
|
||||
with <code>virsh nodedev-list</code>. The
|
||||
<code>bus</code> attribute allows the hexadecimal values 0 to ff, the
|
||||
<code>slot</code> attribute allows the hexadecimal values 0 to 1f, and
|
||||
the <code>function</code> attribute allows the hexadecimal values 0 to
|
||||
7. There is also an optional <code>domain</code> attribute for the
|
||||
PCI domain, with hexadecimal values 0 to ffff, but it is currently
|
||||
not used by qemu.</dd></dl>
|
||||
<h4>
|
||||
<a name="elementsNICS" id="elementsNICS">Network interfaces</a>
|
||||
</h4>
|
||||
@ -713,13 +735,18 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<dl><dt><code>graphics</code></dt><dd>The <code>graphics</code> element has a mandatory <code>type</code>
|
||||
attribute which takes the value "sdl" or "vnc". The former displays
|
||||
a window on the host desktop, while the latter activates a VNC server.
|
||||
The former accepts 3 optional arguments: a <code>display</code>
|
||||
attribute for the display to use, an <code>xauth</code> attribute for
|
||||
the authentication identifier, and an optional <code>fullscreen</code>
|
||||
attribute accepting values 'yes' or 'no'.
|
||||
If the latter is used the <code>port</code> attribute specifies the TCP
|
||||
port number (with -1 as legacy syntax indicating that it should be
|
||||
auto-allocated). The <code>autoport</code> attribute is the new
|
||||
preferred syntax for indicating autoallocation of the TCP port to use.
|
||||
The <code>listen</code> attribute is an IP address for the server to
|
||||
listen on. The <code>password</code> attribute provides a VNC password
|
||||
in clear text.</dd></dl>
|
||||
in clear text. The <code>keymap</code> attribute specifies the keymap
|
||||
to use.</dd></dl>
|
||||
<h4>
|
||||
<a name="elementsConsole" id="elementsConsole">Consoles, serial & parallel devices</a>
|
||||
</h4>
|
||||
|
@ -287,7 +287,7 @@
|
||||
|
||||
<pre>
|
||||
...
|
||||
<clock sync="localtime"/>
|
||||
<clock offset="localtime"/>
|
||||
...</pre>
|
||||
|
||||
<dl>
|
||||
@ -375,11 +375,12 @@
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h4><a name="elementsUSB">USB devices</a></h4>
|
||||
<h4><a name="elementsUSB">USB and PCI devices</a></h4>
|
||||
|
||||
<p>
|
||||
USB devices attached to the host can be passed through to the guest using
|
||||
the <code>hostdev</code> element. <span class="since">since after 0.4.4</span>
|
||||
USB and PCI devices attached to the host can be passed through to the guest using
|
||||
the <code>hostdev</code> element. <span class="since">since after
|
||||
0.4.4 for USB and 0.6.0 for PCI (KVM only)</span>:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
@ -389,30 +390,51 @@
|
||||
<vendor id='0x1234'/>
|
||||
<product id='0xbeef'/>
|
||||
</source>
|
||||
</disk>
|
||||
</hostdev>
|
||||
...</pre>
|
||||
<p>or:</p>
|
||||
<pre>
|
||||
...
|
||||
<hostdev mode='subsystem' type='pci'>
|
||||
<source>
|
||||
<address bus='0x06' slot='0x02' function='0x0'/>
|
||||
</source>
|
||||
</hostdev>
|
||||
...</pre>
|
||||
|
||||
<dl>
|
||||
<dt><code>hostdev</code></dt>
|
||||
<dd>The <code>hostdev</code> element is the main container for describing
|
||||
host devices. For usb device passthrough <code>mode</code> is always
|
||||
"subsystem" and <code>type</code> is "usb".
|
||||
"subsystem" and <code>type</code> is "usb" for an USB device and "pci"
|
||||
for a PCI device..
|
||||
<dt><code>source</code></dt>
|
||||
<dd>The source element describes the device as seen from the host.
|
||||
The USB device can either be addressed by vendor / product id using the
|
||||
<code>vendor</code> and <code>product</code> elements or by the device's
|
||||
address on the hosts using the <code>address</code> element.</dd>
|
||||
address on the hosts using the <code>address</code> element.
|
||||
PCI devices on the other hand can only be described by their
|
||||
<code>address</code></dd>
|
||||
<dt><code>vendor</code>, <code>product</code></dt>
|
||||
<dd>The <code>vendor</code> and <code>product</code> elements each have an
|
||||
<code>id</code> attribute that specifies the USB vendor and product id.
|
||||
The ids can be given in decimal, hexadecimal (starting with 0x) or
|
||||
octal (starting with 0) form.</dd>
|
||||
<dt><code>address</code></dt>
|
||||
<dd>The <code>address</code> element has a <code>bus</code> and
|
||||
<code>device</code> attribute to specify the USB bus and device number
|
||||
the device appears at on the host. The values of these attributes can
|
||||
be given in decimal, hexadecimal (starting with 0x) or octal (starting
|
||||
with 0) form.</dd>
|
||||
<dd>The <code>address</code> element for USB devices has a
|
||||
<code>bus</code> and <code>device</code> attribute to specify the
|
||||
USB bus and device number the device appears at on the host.
|
||||
The values of these attributes can be given in decimal, hexadecimal
|
||||
(starting with 0x) or octal (starting with 0) form.
|
||||
For PCI devices the element carries 3 attributes allowing to designate
|
||||
the device as can be found with the <code>lspci</code> or
|
||||
with <code>virsh nodedev-list</code>. The
|
||||
<code>bus</code> attribute allows the hexadecimal values 0 to ff, the
|
||||
<code>slot</code> attribute allows the hexadecimal values 0 to 1f, and
|
||||
the <code>function</code> attribute allows the hexadecimal values 0 to
|
||||
7. There is also an optional <code>domain</code> attribute for the
|
||||
PCI domain, with hexadecimal values 0 to ffff, but it is currently
|
||||
not used by qemu.</dd>
|
||||
</dl>
|
||||
|
||||
<h4><a name="elementsNICS">Network interfaces</a></h4>
|
||||
@ -657,13 +679,18 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<dd>The <code>graphics</code> element has a mandatory <code>type</code>
|
||||
attribute which takes the value "sdl" or "vnc". The former displays
|
||||
a window on the host desktop, while the latter activates a VNC server.
|
||||
The former accepts 3 optional arguments: a <code>display</code>
|
||||
attribute for the display to use, an <code>xauth</code> attribute for
|
||||
the authentication identifier, and an optional <code>fullscreen</code>
|
||||
attribute accepting values 'yes' or 'no'.
|
||||
If the latter is used the <code>port</code> attribute specifies the TCP
|
||||
port number (with -1 as legacy syntax indicating that it should be
|
||||
auto-allocated). The <code>autoport</code> attribute is the new
|
||||
preferred syntax for indicating autoallocation of the TCP port to use.
|
||||
The <code>listen</code> attribute is an IP address for the server to
|
||||
listen on. The <code>password</code> attribute provides a VNC password
|
||||
in clear text.</dd>
|
||||
in clear text. The <code>keymap</code> attribute specifies the keymap
|
||||
to use.</dd>
|
||||
</dl>
|
||||
|
||||
<h4><a name="elementsConsole">Consoles, serial & parallel devices</a></h4>
|
||||
|
@ -211,7 +211,9 @@
|
||||
...
|
||||
<ip address="192.168.122.1" netmask="255.255.255.0">
|
||||
<dhcp>
|
||||
<range start="192.168.122.2" end="192.168.122.254" />
|
||||
<range start="192.168.122.100" end="192.168.122.254" />
|
||||
<host mac="00:16:3e:77:e2:ed" name="foo.example.com" ip="192.168.122.10" />
|
||||
<host mac="00:16:3e:3e:a9:1a" name="bar.example.com" ip="192.168.122.11" />
|
||||
</dhcp>
|
||||
</ip>
|
||||
</network></pre>
|
||||
@ -231,6 +233,14 @@
|
||||
IPv4 addresses to be provided to DHCP clients. These two addresses
|
||||
must lie within the scope of the network defined on the parent
|
||||
<code>ip</code> element. <span class="since">Since 0.3.0</span>
|
||||
</dd><dt><code>host</code></dt><dd>Within the <code>dhcp</code> element there may be zero or more
|
||||
<code>host</code> elements; these specify hosts which will be given
|
||||
names and predefined IP addresses by the built-in DHCP server. Any
|
||||
such element must specify the MAC address of the host to be assigned
|
||||
a given name (via the <code>mac</code> attribute), the IP to be
|
||||
assigned to that host (via the <code>ip</code> attribute), and the
|
||||
name to be given that host by the DHCP server (via the
|
||||
<code>name</code> attribute). <span class="since">Since 0.4.5</span>
|
||||
</dd></dl>
|
||||
<h2>
|
||||
<a name="examples" id="examples">Example configuration</a>
|
||||
|
@ -98,7 +98,9 @@
|
||||
...
|
||||
<ip address="192.168.122.1" netmask="255.255.255.0">
|
||||
<dhcp>
|
||||
<range start="192.168.122.2" end="192.168.122.254" />
|
||||
<range start="192.168.122.100" end="192.168.122.254" />
|
||||
<host mac="00:16:3e:77:e2:ed" name="foo.example.com" ip="192.168.122.10" />
|
||||
<host mac="00:16:3e:3e:a9:1a" name="bar.example.com" ip="192.168.122.11" />
|
||||
</dhcp>
|
||||
</ip>
|
||||
</network></pre>
|
||||
@ -126,6 +128,16 @@
|
||||
must lie within the scope of the network defined on the parent
|
||||
<code>ip</code> element. <span class="since">Since 0.3.0</span>
|
||||
</dd>
|
||||
<dt><code>host</code></dt>
|
||||
<dd>Within the <code>dhcp</code> element there may be zero or more
|
||||
<code>host</code> elements; these specify hosts which will be given
|
||||
names and predefined IP addresses by the built-in DHCP server. Any
|
||||
such element must specify the MAC address of the host to be assigned
|
||||
a given name (via the <code>mac</code> attribute), the IP to be
|
||||
assigned to that host (via the <code>ip</code> attribute), and the
|
||||
name to be given that host by the DHCP server (via the
|
||||
<code>name</code> attribute). <span class="since">Since 0.4.5</span>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2><a name="examples">Example configuration</a></h2>
|
||||
|
@ -131,6 +131,8 @@
|
||||
<a href="#StorageVolFirst">General metadata</a>
|
||||
</li><li>
|
||||
<a href="#StorageVolTarget">Target elements</a>
|
||||
</li><li>
|
||||
<a href="#StorageVolBacking">Backing store elements</a>
|
||||
</li></ul>
|
||||
</li><li>
|
||||
<a href="#examples">Example configuration</a>
|
||||
@ -328,25 +330,18 @@
|
||||
...
|
||||
<target>
|
||||
<path>/var/lib/virt/images/sparse.img</path>
|
||||
<format>qcow2</format>
|
||||
<permissions>
|
||||
<owner>0744</owner>
|
||||
<group>0744</group>
|
||||
<mode>0744</mode>
|
||||
<label>virt_image_t</label>
|
||||
</permissions>
|
||||
</target>
|
||||
</volume></pre>
|
||||
<dl><dt><code>path</code></dt><dd>Provides the location at which the pool will be mapped into
|
||||
the local filesystem namespace. For a filesystem/directory based
|
||||
pool it will be the name of the directory in which volumes will
|
||||
be created. For device based pools it will be the name of the directory in which
|
||||
devices nodes exist. For the latter <code>/dev/</code> may seem
|
||||
like the logical choice, however, devices nodes there are not
|
||||
guaranteed stable across reboots, since they are allocated on
|
||||
demand. It is preferable to use a stable location such as one
|
||||
of the <code>/dev/disk/by-{path,id,uuid,label</code> locations.
|
||||
<span class="since">Since 0.4.1</span>
|
||||
</dd><dt><code>format</code></dt><dd>Provides information about the pool specific volume format.
|
||||
</target></pre>
|
||||
<dl><dt><code>path</code></dt><dd>Provides the location at which the volume can be accessed on
|
||||
the local filesystem, as an absolute path. This is a readonly
|
||||
attribute, so shouldn't be specified when creating a volume.
|
||||
<span class="since">Since 0.4.1</span></dd><dt><code>format</code></dt><dd>Provides information about the pool specific volume format.
|
||||
For disk pools it will provide the partition type. For filesystem
|
||||
or directory pools it will provide the file format type, eg cow,
|
||||
qcow, vmdk, raw. If omitted when creating a volume, the pool's
|
||||
@ -362,6 +357,45 @@
|
||||
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></dl>
|
||||
<h3>
|
||||
<a name="StorageVolBacking" id="StorageVolBacking">Backing store elements</a>
|
||||
</h3>
|
||||
<p>
|
||||
A single <code>backingStore</code> element is contained within the top level
|
||||
<code>volume</code> element. This tag is used to describe the optional copy
|
||||
on write, backing store for the storage volume. It can contain the following
|
||||
child elements:
|
||||
</p>
|
||||
<pre>
|
||||
...
|
||||
<backingStore>
|
||||
<path>/var/lib/virt/images/master.img</path>
|
||||
<format>raw</format>
|
||||
<permissions>
|
||||
<owner>0744</owner>
|
||||
<group>0744</group>
|
||||
<mode>0744</mode>
|
||||
<label>virt_image_t</label>
|
||||
</permissions>
|
||||
</backingStore>
|
||||
</volume></pre>
|
||||
<dl><dt><code>path</code></dt><dd>Provides the location at which the backing store can be accessed on
|
||||
the local filesystem, as an absolute path. If omitted, there is no
|
||||
backing store for this volume.
|
||||
<span class="since">Since 0.6.0</span></dd><dt><code>format</code></dt><dd>Provides information about the pool specific backing store format.
|
||||
For disk pools it will provide the partition type. For filesystem
|
||||
or directory pools it will provide the file format type, eg cow,
|
||||
qcow, vmdk, raw. Consult the pool-specific docs for the list of valid
|
||||
values. Most file formats require a backing store of the same format,
|
||||
however, the qcow2 format allows a different backing store format.
|
||||
<span class="since">Since 0.6.0</span></dd><dt><code>permissions</code></dt><dd>Provides information about the permissions of the backing file.
|
||||
It contains 4 child elements. The
|
||||
<code>mode</code> element contains the octal permission set. The
|
||||
<code>owner</code> element contains the numeric user ID. The <code>group</code>
|
||||
element contains the numeric group ID. The <code>label</code> element
|
||||
contains the MAC (eg SELinux) label string.
|
||||
<span class="since">Since 0.6.0</span>
|
||||
</dd></dl>
|
||||
<h2>
|
||||
<a name="examples" id="examples">Example configuration</a>
|
||||
|
@ -234,28 +234,21 @@
|
||||
...
|
||||
<target>
|
||||
<path>/var/lib/virt/images/sparse.img</path>
|
||||
<format>qcow2</format>
|
||||
<permissions>
|
||||
<owner>0744</owner>
|
||||
<group>0744</group>
|
||||
<mode>0744</mode>
|
||||
<label>virt_image_t</label>
|
||||
</permissions>
|
||||
</target>
|
||||
</volume></pre>
|
||||
</target></pre>
|
||||
|
||||
<dl>
|
||||
<dt><code>path</code></dt>
|
||||
<dd>Provides the location at which the pool will be mapped into
|
||||
the local filesystem namespace. For a filesystem/directory based
|
||||
pool it will be the name of the directory in which volumes will
|
||||
be created. For device based pools it will be the name of the directory in which
|
||||
devices nodes exist. For the latter <code>/dev/</code> may seem
|
||||
like the logical choice, however, devices nodes there are not
|
||||
guaranteed stable across reboots, since they are allocated on
|
||||
demand. It is preferable to use a stable location such as one
|
||||
of the <code>/dev/disk/by-{path,id,uuid,label</code> locations.
|
||||
<span class="since">Since 0.4.1</span>
|
||||
</dd>
|
||||
<dd>Provides the location at which the volume can be accessed on
|
||||
the local filesystem, as an absolute path. This is a readonly
|
||||
attribute, so shouldn't be specified when creating a volume.
|
||||
<span class="since">Since 0.4.1</span></dd>
|
||||
<dt><code>format</code></dt>
|
||||
<dd>Provides information about the pool specific volume format.
|
||||
For disk pools it will provide the partition type. For filesystem
|
||||
@ -278,6 +271,54 @@
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h3><a name="StorageVolBacking">Backing store elements</a></h3>
|
||||
|
||||
<p>
|
||||
A single <code>backingStore</code> element is contained within the top level
|
||||
<code>volume</code> element. This tag is used to describe the optional copy
|
||||
on write, backing store for the storage volume. It can contain the following
|
||||
child elements:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
...
|
||||
<backingStore>
|
||||
<path>/var/lib/virt/images/master.img</path>
|
||||
<format>raw</format>
|
||||
<permissions>
|
||||
<owner>0744</owner>
|
||||
<group>0744</group>
|
||||
<mode>0744</mode>
|
||||
<label>virt_image_t</label>
|
||||
</permissions>
|
||||
</backingStore>
|
||||
</volume></pre>
|
||||
|
||||
<dl>
|
||||
<dt><code>path</code></dt>
|
||||
<dd>Provides the location at which the backing store can be accessed on
|
||||
the local filesystem, as an absolute path. If omitted, there is no
|
||||
backing store for this volume.
|
||||
<span class="since">Since 0.6.0</span></dd>
|
||||
<dt><code>format</code></dt>
|
||||
<dd>Provides information about the pool specific backing store format.
|
||||
For disk pools it will provide the partition type. For filesystem
|
||||
or directory pools it will provide the file format type, eg cow,
|
||||
qcow, vmdk, raw. Consult the pool-specific docs for the list of valid
|
||||
values. Most file formats require a backing store of the same format,
|
||||
however, the qcow2 format allows a different backing store format.
|
||||
<span class="since">Since 0.6.0</span></dd>
|
||||
<dt><code>permissions</code></dt>
|
||||
<dd>Provides information about the permissions of the backing file.
|
||||
It contains 4 child elements. The
|
||||
<code>mode</code> element contains the octal permission set. The
|
||||
<code>owner</code> element contains the numeric user ID. The <code>group</code>
|
||||
element contains the numeric group ID. The <code>label</code> element
|
||||
contains the MAC (eg SELinux) label string.
|
||||
<span class="since">Since 0.6.0</span>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2><a name="examples">Example configuration</a></h2>
|
||||
|
||||
<p>
|
||||
|
157
docs/goals.html
Normal file
157
docs/goals.html
Normal file
@ -0,0 +1,157 @@
|
||||
<?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 goals.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: Terminology and goals</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="active" href="intro.html">Architecture</a>
|
||||
<ul class="l2"><li>
|
||||
<div>
|
||||
<span class="active">Goals</span>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Managing virtual machines" class="inactive" href="archdomain.html">Domains</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Providing isolated networks and NAT based network connectivity" class="inactive" href="archnetwork.html">Network</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Managing storage pools and volumes" class="inactive" href="archstorage.html">Storage</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Enumerating host node devices" class="inactive" href="archnode.html">Node Devices</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Description of the XML formats used in libvirt" class="inactive" href="format.html">XML format</a>
|
||||
</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></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>Terminology and goals</h1>
|
||||
<p>To avoid ambiguity about the terms used, here are the definitions
|
||||
for some of the specific concepts used in libvirt documentation:</p>
|
||||
<ul><li>a <strong>node</strong> is a single physical machine</li><li>an <strong>hypervisor</strong> is a layer of software allowing to
|
||||
virtualize a node in a set of virtual machines with possibly different
|
||||
configurations than the node itself</li><li>a <strong>domain</strong> is an instance of an operating system
|
||||
(or subsystem in the case of container virtualization) running on a
|
||||
virtualized machine provided by the hypervisor</li></ul>
|
||||
<p class="image">
|
||||
<img alt="Hypervisor and domains running on a node" src="node.gif" /></p>
|
||||
<p>Now we can define the goal of libvirt: to provide a common generic
|
||||
and stable layer to securely manage domains on a node. The node may be
|
||||
distant and libvirt should provide all APIs needed to provision, create,
|
||||
modify, monitor, control, migrate and stop the domains, within the limits
|
||||
of the support of the hypervisor for those operations. Multiple mode may
|
||||
be accessed with libvirt simultaneously but the APIs are limited to
|
||||
single node operations.</p>
|
||||
<p>This implies the following sub-goals:</p>
|
||||
<ul><li>the API should not be targeted to a single virtualization environment
|
||||
which also means that some very specific capabilities which are not generic
|
||||
enough may not be provided as libvirt APIs</li><li>the API should allow to do efficiently and cleanly all the operations
|
||||
needed to manage domains on a node</li><li>the API will not try to provide high level virtualization policies or
|
||||
multi-nodes management features like load balancing, but the API should be
|
||||
sufficient so they can be implemented on top of libvirt</li><li>stability of the API is a big concern, libvirt should isolate
|
||||
applications from the frequent changes expected at the lower level of the
|
||||
virtualization framework</li><li>the node being managed may be on a different physical machine than
|
||||
the management program using libvirt, to this effect libvirt supports
|
||||
remote access, but should only do so by using secure protocols.</li><li>libvirt will provide APIs to enumerate, monitor and use the resources
|
||||
available on the managed node, including CPUs, memory, storage, networking,
|
||||
and NUMA partitions.</li></ul>
|
||||
<p>So libvirt is intended to be a building block for higher level
|
||||
management tools and for applications focusing on virtualization of a
|
||||
single node (the only exception being domain migration between node
|
||||
capabilities which involves more than one node).</p>
|
||||
</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>
|
51
docs/goals.html.in
Normal file
51
docs/goals.html.in
Normal file
@ -0,0 +1,51 @@
|
||||
<?xml version="1.0"?>
|
||||
<html>
|
||||
<body>
|
||||
<h1>Terminology and goals</h1>
|
||||
<p>To avoid ambiguity about the terms used, here are the definitions
|
||||
for some of the specific concepts used in libvirt documentation:</p>
|
||||
<ul>
|
||||
<li>a <strong>node</strong> is a single physical machine</li>
|
||||
<li>an <strong>hypervisor</strong> is a layer of software allowing to
|
||||
virtualize a node in a set of virtual machines with possibly different
|
||||
configurations than the node itself</li>
|
||||
<li>a <strong>domain</strong> is an instance of an operating system
|
||||
(or subsystem in the case of container virtualization) running on a
|
||||
virtualized machine provided by the hypervisor</li>
|
||||
</ul>
|
||||
<p class="image">
|
||||
<img alt="Hypervisor and domains running on a node" src="node.gif"/>
|
||||
</p>
|
||||
<p>Now we can define the goal of libvirt: to provide a common generic
|
||||
and stable layer to securely manage domains on a node. The node may be
|
||||
distant and libvirt should provide all APIs needed to provision, create,
|
||||
modify, monitor, control, migrate and stop the domains, within the limits
|
||||
of the support of the hypervisor for those operations. Multiple mode may
|
||||
be accessed with libvirt simultaneously but the APIs are limited to
|
||||
single node operations.</p>
|
||||
<p>This implies the following sub-goals:</p>
|
||||
<ul>
|
||||
<li>the API should not be targeted to a single virtualization environment
|
||||
which also means that some very specific capabilities which are not generic
|
||||
enough may not be provided as libvirt APIs</li>
|
||||
<li>the API should allow to do efficiently and cleanly all the operations
|
||||
needed to manage domains on a node</li>
|
||||
<li>the API will not try to provide high level virtualization policies or
|
||||
multi-nodes management features like load balancing, but the API should be
|
||||
sufficient so they can be implemented on top of libvirt</li>
|
||||
<li>stability of the API is a big concern, libvirt should isolate
|
||||
applications from the frequent changes expected at the lower level of the
|
||||
virtualization framework</li>
|
||||
<li>the node being managed may be on a different physical machine than
|
||||
the management program using libvirt, to this effect libvirt supports
|
||||
remote access, but should only do so by using secure protocols.</li>
|
||||
<li>libvirt will provide APIs to enumerate, monitor and use the resources
|
||||
available on the managed node, including CPUs, memory, storage, networking,
|
||||
and NUMA partitions.</li>
|
||||
</ul>
|
||||
<p>So libvirt is intended to be a building block for higher level
|
||||
management tools and for applications focusing on virtualization of a
|
||||
single node (the only exception being domain migration between node
|
||||
capabilities which involves more than one node).</p>
|
||||
</body>
|
||||
</html>
|
@ -10,6 +10,9 @@
|
||||
#define <a href="#VIR_DOMAIN_SCHED_FIELD_LENGTH">VIR_DOMAIN_SCHED_FIELD_LENGTH</a>
|
||||
#define <a href="#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a>
|
||||
#define <a href="#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a>
|
||||
#define <a href="#VIR_SECURITY_DOI_BUFLEN">VIR_SECURITY_DOI_BUFLEN</a>
|
||||
#define <a href="#VIR_SECURITY_LABEL_BUFLEN">VIR_SECURITY_LABEL_BUFLEN</a>
|
||||
#define <a href="#VIR_SECURITY_MODEL_BUFLEN">VIR_SECURITY_MODEL_BUFLEN</a>
|
||||
#define <a href="#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a>
|
||||
#define <a href="#VIR_USE_CPU">VIR_USE_CPU</a>
|
||||
#define <a href="#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a>
|
||||
@ -52,6 +55,10 @@ 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 _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>
|
||||
typedef <a href="libvirt-libvirt.html#virSecurityModel">virSecurityModel</a> * <a name="virSecurityModelPtr" id="virSecurityModelPtr">virSecurityModelPtr</a>
|
||||
typedef struct _virStoragePool <a href="#virStoragePool">virStoragePool</a>
|
||||
typedef enum <a href="#virStoragePoolBuildFlags">virStoragePoolBuildFlags</a>
|
||||
typedef enum <a href="#virStoragePoolDeleteFlags">virStoragePoolDeleteFlags</a>
|
||||
@ -99,6 +106,7 @@ int <a href="#virConnectNumOfStoragePools">virConnectNumOfStoragePools</a> (<a h
|
||||
<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)
|
||||
<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virConnectOpenReadOnly">virConnectOpenReadOnly</a> (const char * name)
|
||||
int <a href="#virConnectRef">virConnectRef</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
int <a href="#virDomainAttachDevice">virDomainAttachDevice</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> const char * xml)
|
||||
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)
|
||||
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)
|
||||
@ -120,6 +128,7 @@ const char * <a href="#virDomainGetName">virDomainGetName</a> (<a href="libvirt-
|
||||
char * <a href="#virDomainGetOSType">virDomainGetOSType</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)
|
||||
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)
|
||||
char * <a href="#virDomainGetSchedulerType">virDomainGetSchedulerType</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> int * nparams)
|
||||
int <a href="#virDomainGetSecurityLabel">virDomainGetSecurityLabel</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> <a href="libvirt-libvirt.html#virSecurityLabelPtr">virSecurityLabelPtr</a> seclabel)
|
||||
int <a href="#virDomainGetUUID">virDomainGetUUID</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned char * uuid)
|
||||
int <a href="#virDomainGetUUIDString">virDomainGetUUIDString</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> char * buf)
|
||||
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)
|
||||
@ -133,6 +142,7 @@ int <a href="#virDomainMemoryPeek">virDomainMemoryPeek</a> (<a href="libvirt-li
|
||||
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a href="#virDomainMigrate">virDomainMigrate</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> dconn, <br /> unsigned long flags, <br /> const char * dname, <br /> const char * uri, <br /> unsigned long bandwidth)
|
||||
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="#virDomainReboot">virDomainReboot</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned int flags)
|
||||
int <a href="#virDomainRef">virDomainRef</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)
|
||||
int <a href="#virDomainRestore">virDomainRestore</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * from)
|
||||
int <a href="#virDomainResume">virDomainResume</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)
|
||||
int <a href="#virDomainSave">virDomainSave</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> const char * to)
|
||||
@ -189,8 +199,10 @@ char * <a href="#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a> (<a href="libvi
|
||||
<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)
|
||||
<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)
|
||||
<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)
|
||||
int <a href="#virNetworkRef">virNetworkRef</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)
|
||||
int <a href="#virNetworkSetAutostart">virNetworkSetAutostart</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br /> int autostart)
|
||||
int <a href="#virNetworkUndefine">virNetworkUndefine</a> (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)
|
||||
int <a href="#virNodeDeviceDettach">virNodeDeviceDettach</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)
|
||||
int <a href="#virNodeDeviceFree">virNodeDeviceFree</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)
|
||||
const char * <a href="#virNodeDeviceGetName">virNodeDeviceGetName</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)
|
||||
const char * <a href="#virNodeDeviceGetParent">virNodeDeviceGetParent</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)
|
||||
@ -198,9 +210,13 @@ char * <a href="#virNodeDeviceGetXMLDesc">virNodeDeviceGetXMLDesc</a> (<a href=
|
||||
int <a href="#virNodeDeviceListCaps">virNodeDeviceListCaps</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev, <br /> char ** const names, <br /> int maxnames)
|
||||
<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="#virNodeDeviceNumOfCaps">virNodeDeviceNumOfCaps</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)
|
||||
int <a href="#virNodeDeviceReAttach">virNodeDeviceReAttach</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)
|
||||
int <a href="#virNodeDeviceRef">virNodeDeviceRef</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)
|
||||
int <a href="#virNodeDeviceReset">virNodeDeviceReset</a> (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)
|
||||
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)
|
||||
unsigned long long <a href="#virNodeGetFreeMemory">virNodeGetFreeMemory</a> (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)
|
||||
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="#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)
|
||||
int <a href="#virStoragePoolBuild">virStoragePoolBuild</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)
|
||||
@ -223,6 +239,7 @@ int <a href="#virStoragePoolListVolumes">virStoragePoolListVolumes</a> (<a href=
|
||||
<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#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolLookupByVolume">virStoragePoolLookupByVolume</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)
|
||||
int <a href="#virStoragePoolNumOfVolumes">virStoragePoolNumOfVolumes</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)
|
||||
int <a href="#virStoragePoolRef">virStoragePoolRef</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)
|
||||
int <a href="#virStoragePoolRefresh">virStoragePoolRefresh</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)
|
||||
int <a href="#virStoragePoolSetAutostart">virStoragePoolSetAutostart</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> int autostart)
|
||||
int <a href="#virStoragePoolUndefine">virStoragePoolUndefine</a> (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)
|
||||
@ -238,7 +255,8 @@ char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href=
|
||||
<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)
|
||||
<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)
|
||||
<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)
|
||||
</pre><h2>Description</h2><h3><a name="macros" id="macros">Macros</a></h3><h3><a name="LIBVIR_VERSION_NUMBER" id="LIBVIR_VERSION_NUMBER"><code>LIBVIR_VERSION_NUMBER</code></a></h3><pre>#define LIBVIR_VERSION_NUMBER</pre><p>Macro providing the version of the library as version * 1,000,000 + minor * 1000 + micro</p><h3><a name="VIR_COPY_CPUMAP" id="VIR_COPY_CPUMAP"><code>VIR_COPY_CPUMAP</code></a></h3><pre>#define VIR_COPY_CPUMAP</pre><p>This macro is to be used in conjunction with virDomainGetVcpus() and virDomainPinVcpu() APIs. <a href="libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a> macro extract the cpumap of the specified vcpu from cpumaps array and copy it into cpumap to be used later by virDomainPinVcpu() API.</p><h3><a name="VIR_CPU_MAPLEN" id="VIR_CPU_MAPLEN"><code>VIR_CPU_MAPLEN</code></a></h3><pre>#define VIR_CPU_MAPLEN</pre><p>This macro is to be used in conjunction with virDomainPinVcpu() API. It returns the length (in bytes) required to store the complete CPU map between a single virtual & all physical CPUs of a domain.</p><h3><a name="VIR_CPU_USABLE" id="VIR_CPU_USABLE"><code>VIR_CPU_USABLE</code></a></h3><pre>#define VIR_CPU_USABLE</pre><p>This macro is to be used in conjunction with virDomainGetVcpus() API. <a href="libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a> macro returns a non zero value (true) if the cpu is usable by the vcpu, and 0 otherwise.</p><h3><a name="VIR_DOMAIN_SCHED_FIELD_LENGTH" id="VIR_DOMAIN_SCHED_FIELD_LENGTH"><code>VIR_DOMAIN_SCHED_FIELD_LENGTH</code></a></h3><pre>#define VIR_DOMAIN_SCHED_FIELD_LENGTH</pre><p>Macro providing the field length of <a href="libvirt-libvirt.html#virSchedParameter">virSchedParameter</a></p><h3><a name="VIR_GET_CPUMAP" id="VIR_GET_CPUMAP"><code>VIR_GET_CPUMAP</code></a></h3><pre>#define VIR_GET_CPUMAP</pre><p>This macro is to be used in conjunction with virDomainGetVcpus() and virDomainPinVcpu() APIs. <a href="libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a> macro returns a pointer to the cpumap of the specified vcpu from cpumaps array.</p><h3><a name="VIR_NODEINFO_MAXCPUS" id="VIR_NODEINFO_MAXCPUS"><code>VIR_NODEINFO_MAXCPUS</code></a></h3><pre>#define VIR_NODEINFO_MAXCPUS</pre><p>This macro is to calculate the total number of CPUs supported but not necessary active in the host.</p><h3><a name="VIR_UNUSE_CPU" id="VIR_UNUSE_CPU"><code>VIR_UNUSE_CPU</code></a></h3><pre>#define VIR_UNUSE_CPU</pre><p>This macro is to be used in conjunction with virDomainPinVcpu() API. USE_CPU macro reset the bit (CPU not usable) of the related cpu in cpumap.</p><h3><a name="VIR_USE_CPU" id="VIR_USE_CPU"><code>VIR_USE_CPU</code></a></h3><pre>#define VIR_USE_CPU</pre><p>This macro is to be used in conjunction with virDomainPinVcpu() API. USE_CPU macro set the bit (CPU usable) of the related cpu in cpumap.</p><h3><a name="VIR_UUID_BUFLEN" id="VIR_UUID_BUFLEN"><code>VIR_UUID_BUFLEN</code></a></h3><pre>#define VIR_UUID_BUFLEN</pre><p>This macro provides the length of the buffer required for virDomainGetUUID()</p><h3><a name="VIR_UUID_STRING_BUFLEN" id="VIR_UUID_STRING_BUFLEN"><code>VIR_UUID_STRING_BUFLEN</code></a></h3><pre>#define VIR_UUID_STRING_BUFLEN</pre><p>This macro provides the length of the buffer required for virDomainGetUUIDString()</p><h3><a name="types" id="types">Types</a></h3><h3><a name="virConnect" id="virConnect"><code>virConnect</code></a></h3><div class="api"><pre>struct virConnect{
|
||||
int <a href="#virStorageVolRef">virStorageVolRef</a> (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)
|
||||
</pre><h2>Description</h2><h3><a name="macros" id="macros">Macros</a></h3><h3><a name="LIBVIR_VERSION_NUMBER" id="LIBVIR_VERSION_NUMBER"><code>LIBVIR_VERSION_NUMBER</code></a></h3><pre>#define LIBVIR_VERSION_NUMBER</pre><p>Macro providing the version of the library as version * 1,000,000 + minor * 1000 + micro</p><h3><a name="VIR_COPY_CPUMAP" id="VIR_COPY_CPUMAP"><code>VIR_COPY_CPUMAP</code></a></h3><pre>#define VIR_COPY_CPUMAP</pre><p>This macro is to be used in conjunction with virDomainGetVcpus() and virDomainPinVcpu() APIs. <a href="libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a> macro extract the cpumap of the specified vcpu from cpumaps array and copy it into cpumap to be used later by virDomainPinVcpu() API.</p><h3><a name="VIR_CPU_MAPLEN" id="VIR_CPU_MAPLEN"><code>VIR_CPU_MAPLEN</code></a></h3><pre>#define VIR_CPU_MAPLEN</pre><p>This macro is to be used in conjunction with virDomainPinVcpu() API. It returns the length (in bytes) required to store the complete CPU map between a single virtual & all physical CPUs of a domain.</p><h3><a name="VIR_CPU_USABLE" id="VIR_CPU_USABLE"><code>VIR_CPU_USABLE</code></a></h3><pre>#define VIR_CPU_USABLE</pre><p>This macro is to be used in conjunction with virDomainGetVcpus() API. <a href="libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a> macro returns a non zero value (true) if the cpu is usable by the vcpu, and 0 otherwise.</p><h3><a name="VIR_DOMAIN_SCHED_FIELD_LENGTH" id="VIR_DOMAIN_SCHED_FIELD_LENGTH"><code>VIR_DOMAIN_SCHED_FIELD_LENGTH</code></a></h3><pre>#define VIR_DOMAIN_SCHED_FIELD_LENGTH</pre><p>Macro providing the field length of <a href="libvirt-libvirt.html#virSchedParameter">virSchedParameter</a></p><h3><a name="VIR_GET_CPUMAP" id="VIR_GET_CPUMAP"><code>VIR_GET_CPUMAP</code></a></h3><pre>#define VIR_GET_CPUMAP</pre><p>This macro is to be used in conjunction with virDomainGetVcpus() and virDomainPinVcpu() APIs. <a href="libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a> macro returns a pointer to the cpumap of the specified vcpu from cpumaps array.</p><h3><a name="VIR_NODEINFO_MAXCPUS" id="VIR_NODEINFO_MAXCPUS"><code>VIR_NODEINFO_MAXCPUS</code></a></h3><pre>#define VIR_NODEINFO_MAXCPUS</pre><p>This macro is to calculate the total number of CPUs supported but not necessary active in the host.</p><h3><a name="VIR_SECURITY_DOI_BUFLEN" id="VIR_SECURITY_DOI_BUFLEN"><code>VIR_SECURITY_DOI_BUFLEN</code></a></h3><pre>#define VIR_SECURITY_DOI_BUFLEN</pre><p>Macro providing the maximum length of the <a href="libvirt-libvirt.html#virSecurityModel">virSecurityModel</a> doi string.</p><h3><a name="VIR_SECURITY_LABEL_BUFLEN" id="VIR_SECURITY_LABEL_BUFLEN"><code>VIR_SECURITY_LABEL_BUFLEN</code></a></h3><pre>#define VIR_SECURITY_LABEL_BUFLEN</pre><p>Macro providing the maximum length of the <a href="libvirt-libvirt.html#virSecurityLabel">virSecurityLabel</a> label string. Note that this value is based on that used by Labeled NFS.</p><h3><a name="VIR_SECURITY_MODEL_BUFLEN" id="VIR_SECURITY_MODEL_BUFLEN"><code>VIR_SECURITY_MODEL_BUFLEN</code></a></h3><pre>#define VIR_SECURITY_MODEL_BUFLEN</pre><p>Macro providing the maximum length of the <a href="libvirt-libvirt.html#virSecurityModel">virSecurityModel</a> model string.</p><h3><a name="VIR_UNUSE_CPU" id="VIR_UNUSE_CPU"><code>VIR_UNUSE_CPU</code></a></h3><pre>#define VIR_UNUSE_CPU</pre><p>This macro is to be used in conjunction with virDomainPinVcpu() API. USE_CPU macro reset the bit (CPU not usable) of the related cpu in cpumap.</p><h3><a name="VIR_USE_CPU" id="VIR_USE_CPU"><code>VIR_USE_CPU</code></a></h3><pre>#define VIR_USE_CPU</pre><p>This macro is to be used in conjunction with virDomainPinVcpu() API. USE_CPU macro set the bit (CPU usable) of the related cpu in cpumap.</p><h3><a name="VIR_UUID_BUFLEN" id="VIR_UUID_BUFLEN"><code>VIR_UUID_BUFLEN</code></a></h3><pre>#define VIR_UUID_BUFLEN</pre><p>This macro provides the length of the buffer required for virDomainGetUUID()</p><h3><a name="VIR_UUID_STRING_BUFLEN" id="VIR_UUID_STRING_BUFLEN"><code>VIR_UUID_STRING_BUFLEN</code></a></h3><pre>#define VIR_UUID_STRING_BUFLEN</pre><p>This macro provides the length of the buffer required for virDomainGetUUIDString()</p><h3><a name="types" id="types">Types</a></h3><h3><a name="virConnect" id="virConnect"><code>virConnect</code></a></h3><div class="api"><pre>struct virConnect{
|
||||
</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="virConnectAuth" id="virConnectAuth"><code>virConnectAuth</code></a></h3><div class="api"><pre>struct virConnectAuth{
|
||||
@ -303,6 +321,12 @@ char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href=
|
||||
}
|
||||
</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="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>
|
||||
}
|
||||
</pre></div><h3><a name="virSecurityModel" id="virSecurityModel"><code>virSecurityModel</code></a></h3><div class="api"><pre>struct virSecurityModel{
|
||||
</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="virStoragePool" id="virStoragePool"><code>virStoragePool</code></a></h3><div class="api"><pre>struct virStoragePool{
|
||||
</pre><table><tr><td colspan="3">The content of this structure is not made public by the API</td></tr></table><pre>
|
||||
}
|
||||
@ -335,7 +359,7 @@ char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href=
|
||||
</pre><p>This function closes the connection to the Hypervisor. This should not be called if further interaction with the Hypervisor are needed especially if there is running domain which need further monitoring by the application.</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>0 in case of success or -1 in case of error.</td></tr></tbody></table></div><h3><a name="virConnectDomainEventCallback" id="virConnectDomainEventCallback"><code>virConnectDomainEventCallback</code></a></h3><pre class="programlisting">typedef int (*virConnectDomainEventCallback) (<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)
|
||||
</pre><p>A callback function to be registered, and called when a domain event occurs</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>dom</tt></i>:</span></td><td>The domain on which the event occured</td></tr><tr><td><span class="term"><i><tt>event</tt></i>:</span></td><td>The specfic <a href="libvirt-libvirt.html#virDomainEventType">virDomainEventType</a> which occured</td></tr><tr><td><span class="term"><i><tt>detail</tt></i>:</span></td><td>event specific detail information</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>opaque user data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td></td></tr></tbody></table></div><br /><h3><a name="virConnectDomainEventDeregister" id="virConnectDomainEventDeregister"><code>virConnectDomainEventDeregister</code></a></h3><pre class="programlisting">int virConnectDomainEventDeregister (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> <a href="libvirt-libvirt.html#virConnectDomainEventCallback">virConnectDomainEventCallback</a> cb)<br />
|
||||
</pre><p>Removes a Domain Event Callback. De-registering for a domain callback will disable delivery of this event type</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 connection</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling domain events</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="virConnectDomainEventRegister" id="virConnectDomainEventRegister"><code>virConnectDomainEventRegister</code></a></h3><pre class="programlisting">int virConnectDomainEventRegister (<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)<br />
|
||||
</pre><p>Adds a Domain Event Callback. Registering for a domain callback will enable delivery of the events</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 connection</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling domain events</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>opaque data to pass on to the callback</td></tr><tr><td><span class="term"><i><tt>freecb</tt></i>:</span></td><td>optional function to deallocate opaque when not used anymore</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="virConnectFindStoragePoolSources" id="virConnectFindStoragePoolSources"><code>virConnectFindStoragePoolSources</code></a></h3><pre class="programlisting">char * virConnectFindStoragePoolSources (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * type, <br /> const char * srcSpec, <br /> unsigned int flags)<br />
|
||||
</pre><p>Adds a Domain Event Callback. Registering for a domain callback will enable delivery of the events The <a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> object handle passed into the callback upon delivery of an event is only valid for the duration of execution of the callback. If the callback wishes to keep the domain object after the callback</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 connection</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling domain events</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>opaque data to pass on to the callback</td></tr><tr><td><span class="term"><i><tt>freecb</tt></i>:</span></td><td>optional function to deallocate opaque when not used anymore</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>it shall take a reference to it, by calling virDomainRef. The reference can be released once the object is no longer required by calling virDomainFree. Returns 0 on success, -1 on failure</td></tr></tbody></table></div><h3><a name="virConnectFindStoragePoolSources" id="virConnectFindStoragePoolSources"><code>virConnectFindStoragePoolSources</code></a></h3><pre class="programlisting">char * virConnectFindStoragePoolSources (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * type, <br /> const char * srcSpec, <br /> unsigned int flags)<br />
|
||||
</pre><p>Talks to a storage backend and attempts to auto-discover the set of available storage pool sources. e.g. For iSCSI this would be a set of iSCSI targets. For NFS this would be a list of exported paths. The srcSpec (optional for some storage pool types, e.g. local ones) is an instance of the storage pool's source element specifying where to look for the pools. srcSpec is not required for some types (e.g., those querying local storage resources only)</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>type</tt></i>:</span></td><td>type of storage pool sources to discover</td></tr><tr><td><span class="term"><i><tt>srcSpec</tt></i>:</span></td><td>XML document specifying discovery source</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for discovery (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an xml document consisting of a SourceList element containing a source document appropriate to the given pool type for each discovered source.</td></tr></tbody></table></div><h3><a name="virConnectGetCapabilities" id="virConnectGetCapabilities"><code>virConnectGetCapabilities</code></a></h3><pre class="programlisting">char * virConnectGetCapabilities (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides capabilities of the hypervisor / driver.</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, or an XML string defining the capabilities. The client must free the returned string after use.</td></tr></tbody></table></div><h3><a name="virConnectGetHostname" id="virConnectGetHostname"><code>virConnectGetHostname</code></a></h3><pre class="programlisting">char * virConnectGetHostname (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>This returns the system hostname on which the hypervisor is running (the result of the gethostname(2) system call). If we are connected to a remote system, then this returns the hostname of the remote system.</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 hostname which must be freed by the caller, or NULL if there was an error.</td></tr></tbody></table></div><h3><a name="virConnectGetMaxVcpus" id="virConnectGetMaxVcpus"><code>virConnectGetMaxVcpus</code></a></h3><pre class="programlisting">int virConnectGetMaxVcpus (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * type)<br />
|
||||
@ -357,7 +381,8 @@ char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href=
|
||||
</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="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>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>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></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 />
|
||||
</pre><p>This function returns block device (disk) stats for block devices attached to the domain. The path parameter is the name of the block device. Get this by calling <a href="libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a> and finding the <target dev='...'> attribute within //domain/devices/disk. (For example, "xvda"). Domains may have more than one block device. To get stats for each you should make multiple calls to this function. Individual fields within the stats structure may be returned as -1, which indicates that the hypervisor does not support that particular statistic.</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>stats</tt></i>:</span></td><td>block device stats (returned)</td></tr><tr><td><span class="term"><i><tt>size</tt></i>:</span></td><td>size of stats structure</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.</td></tr></tbody></table></div><h3><a name="virDomainCoreDump" id="virDomainCoreDump"><code>virDomainCoreDump</code></a></h3><pre class="programlisting">int virDomainCoreDump (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> const char * to, <br /> int flags)<br />
|
||||
@ -378,7 +403,8 @@ char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href=
|
||||
</pre><p>Get the public name for that domain</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain 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 domain object.</td></tr></tbody></table></div><h3><a name="virDomainGetOSType" id="virDomainGetOSType"><code>virDomainGetOSType</code></a></h3><pre class="programlisting">char * virDomainGetOSType (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
|
||||
</pre><p>Get the type of domain operation system.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new string or NULL in case of error, the string must be freed by the caller.</td></tr></tbody></table></div><h3><a name="virDomainGetSchedulerParameters" id="virDomainGetSchedulerParameters"><code>virDomainGetSchedulerParameters</code></a></h3><pre class="programlisting">int virDomainGetSchedulerParameters (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> <a href="libvirt-libvirt.html#virSchedParameterPtr">virSchedParameterPtr</a> params, <br /> int * nparams)<br />
|
||||
</pre><p>Get the scheduler parameters, the @params array will be filled with the values.</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>params</tt></i>:</span></td><td>pointer to scheduler parameter object (return value)</td></tr><tr><td><span class="term"><i><tt>nparams</tt></i>:</span></td><td>pointer to number of scheduler parameter (this value should be same than the returned value nparams of virDomainGetSchedulerType)</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="virDomainGetSchedulerType" id="virDomainGetSchedulerType"><code>virDomainGetSchedulerType</code></a></h3><pre class="programlisting">char * virDomainGetSchedulerType (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> int * nparams)<br />
|
||||
</pre><p>Get the scheduler type.</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>nparams</tt></i>:</span></td><td>number of scheduler parameters(return value)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL in case of error. The caller must free the returned string.</td></tr></tbody></table></div><h3><a name="virDomainGetUUID" id="virDomainGetUUID"><code>virDomainGetUUID</code></a></h3><pre class="programlisting">int virDomainGetUUID (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned char * uuid)<br />
|
||||
</pre><p>Get the scheduler type.</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>nparams</tt></i>:</span></td><td>number of scheduler parameters(return value)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL in case of error. The caller must free the returned string.</td></tr></tbody></table></div><h3><a name="virDomainGetSecurityLabel" id="virDomainGetSecurityLabel"><code>virDomainGetSecurityLabel</code></a></h3><pre class="programlisting">int virDomainGetSecurityLabel (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> <a href="libvirt-libvirt.html#virSecurityLabelPtr">virSecurityLabelPtr</a> seclabel)<br />
|
||||
</pre><p>Extract security label of an active domain.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>seclabel</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#virSecurityLabel">virSecurityLabel</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, and -2 if the operation is not supported (caller decides if that's an error).</td></tr></tbody></table></div><h3><a name="virDomainGetUUID" id="virDomainGetUUID"><code>virDomainGetUUID</code></a></h3><pre class="programlisting">int virDomainGetUUID (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned char * uuid)<br />
|
||||
</pre><p>Get the UUID for a domain</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain 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="virDomainGetUUIDString" id="virDomainGetUUIDString"><code>virDomainGetUUIDString</code></a></h3><pre class="programlisting">int virDomainGetUUIDString (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> char * buf)<br />
|
||||
</pre><p>Get the UUID for a domain 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>domain</tt></i>:</span></td><td>a domain 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="virDomainGetVcpus" id="virDomainGetVcpus"><code>virDomainGetVcpus</code></a></h3><pre class="programlisting">int virDomainGetVcpus (<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)<br />
|
||||
</pre><p>Extract information about virtual CPUs of domain, store it in info array and also in cpumaps if this pointer isn't NULL.</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, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer to an array of <a href="libvirt-libvirt.html#virVcpuInfo">virVcpuInfo</a> structures (OUT)</td></tr><tr><td><span class="term"><i><tt>maxinfo</tt></i>:</span></td><td>number of structures in info array</td></tr><tr><td><span class="term"><i><tt>cpumaps</tt></i>:</span></td><td>pointer to an bit map of real CPUs for all vcpus of this domain (in 8-bit bytes) (OUT) If cpumaps is NULL, then no cpumap information is returned by the API. It's assumed there is <maxinfo> cpumap in cpumaps array. The memory allocated to cpumaps must be (maxinfo * maplen) bytes (ie: calloc(maxinfo, maplen)). One cpumap inside cpumaps has the format described in virDomainPinVcpu() API.</td></tr><tr><td><span class="term"><i><tt>maplen</tt></i>:</span></td><td>number of bytes in one cpumap, from 1 up to size of CPU map in underlying virtualization system (Xen...).</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of info filled in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainGetXMLDesc" id="virDomainGetXMLDesc"><code>virDomainGetXMLDesc</code></a></h3><pre class="programlisting">char * virDomainGetXMLDesc (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> int flags)<br />
|
||||
@ -391,7 +417,8 @@ char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href=
|
||||
</pre><p>This function allows you to read the contents of a domain's memory. The memory which is read is controlled by the 'start', 'size' and 'flags' parameters. If 'flags' is <a href="libvirt-libvirt.html#VIR_MEMORY_VIRTUAL">VIR_MEMORY_VIRTUAL</a> then the 'start' and 'size' parameters are interpreted as virtual memory addresses for whichever task happens to be running on the domain at the moment. Although this sounds haphazard it is in fact what you want in order to read Linux kernel state, because it ensures that pointers in the kernel image can be interpreted coherently. 'buffer' is the return buffer and must be at least 'size' bytes. 'size' may be 0 to test if the call would succeed. 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>start</tt></i>:</span></td><td>start of memory to peek</td></tr><tr><td><span class="term"><i><tt>size</tt></i>:</span></td><td>size of memory to peek</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>flags, see below</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="virDomainMigrate" id="virDomainMigrate"><code>virDomainMigrate</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> virDomainMigrate (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> dconn, <br /> unsigned long flags, <br /> const char * dname, <br /> const char * uri, <br /> unsigned long bandwidth)<br />
|
||||
</pre><p>Migrate the domain object from its current host to the destination host given by dconn (a connection to the destination host). Flags may be one of more of the following: <a href="libvirt-libvirt.html#VIR_MIGRATE_LIVE">VIR_MIGRATE_LIVE</a> Attempt a live migration. If a hypervisor supports renaming domains during migration, then you may set the dname parameter to the new name (otherwise it keeps the same name). If this is not supported by the hypervisor, dname must be NULL or else you will get an error. Since typically the two hypervisors connect directly to each other in order to perform the migration, you may need to specify a path from the source to the destination. This is the purpose of the uri parameter. If uri is NULL, then libvirt will try to find the best method. Uri may specify the hostname or IP address of the destination host as seen from the source. Or uri may be a URI giving transport, hostname, user, port, etc. in the usual form. Refer to driver documentation for the particular URIs supported. The maximum bandwidth (in Mbps) that will be used to do migration can be specified with the bandwidth parameter. If set to 0, libvirt will choose a suitable default. Some hypervisors do not support this feature and will return an error if bandwidth is not 0. To see which features are supported by the current hypervisor, see virConnectGetCapabilities, /capabilities/host/migration_features. There are many limitations on migration imposed by the underlying technology - for example it may not be possible to migrate between different processors even with the same architecture, or between different types of hypervisor.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>dconn</tt></i>:</span></td><td>destination host (a connection object)</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags</td></tr><tr><td><span class="term"><i><tt>dname</tt></i>:</span></td><td>(optional) rename domain to this at destination</td></tr><tr><td><span class="term"><i><tt>uri</tt></i>:</span></td><td>(optional) dest hostname/URI as seen from the source host</td></tr><tr><td><span class="term"><i><tt>bandwidth</tt></i>:</span></td><td>(optional) specify migration bandwidth limit in Mbps</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new domain object if the migration was successful, or NULL in case of error. Note that the new domain object exists in the scope of the destination connection (dconn).</td></tr></tbody></table></div><h3><a name="virDomainPinVcpu" id="virDomainPinVcpu"><code>virDomainPinVcpu</code></a></h3><pre class="programlisting">int virDomainPinVcpu (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned int vcpu, <br /> unsigned char * cpumap, <br /> int maplen)<br />
|
||||
</pre><p>Dynamically change the real CPUs which can be allocated to a virtual CPU. This function requires privileged access to the hypervisor.</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, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>vcpu</tt></i>:</span></td><td>virtual CPU number</td></tr><tr><td><span class="term"><i><tt>cpumap</tt></i>:</span></td><td>pointer to a bit map of real CPUs (in 8-bit bytes) (IN) Each bit set to 1 means that corresponding CPU is usable. Bytes are stored in little-endian order: CPU0-7, 8-15... In each byte, lowest CPU number is least significant bit.</td></tr><tr><td><span class="term"><i><tt>maplen</tt></i>:</span></td><td>number of bytes in cpumap, from 1 up to size of CPU map in underlying virtualization system (Xen...). If maplen < size, missing bytes are set to zero. If maplen > size, failure code is returned.</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="virDomainReboot" id="virDomainReboot"><code>virDomainReboot</code></a></h3><pre class="programlisting">int virDomainReboot (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned int flags)<br />
|
||||
</pre><p>Reboot a domain, the domain object is still usable there after but the domain OS is being stopped for a restart. Note that the guest OS may ignore the request.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags for the reboot operation, 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="virDomainRestore" id="virDomainRestore"><code>virDomainRestore</code></a></h3><pre class="programlisting">int virDomainRestore (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * from)<br />
|
||||
</pre><p>Reboot a domain, the domain object is still usable there after but the domain OS is being stopped for a restart. Note that the guest OS may ignore the request.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags for the reboot operation, 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="virDomainRef" id="virDomainRef"><code>virDomainRef</code></a></h3><pre class="programlisting">int virDomainRef (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
|
||||
</pre><p>Increment the reference count on the domain. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virDomainFree">virDomainFree</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 domain would increment the reference count.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td></td></tr></tbody></table></div><h3><a name="virDomainRestore" id="virDomainRestore"><code>virDomainRestore</code></a></h3><pre class="programlisting">int virDomainRestore (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * from)<br />
|
||||
</pre><p>This method will restore a domain saved to disk by virDomainSave().</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>from</tt></i>:</span></td><td>path to the</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="virDomainResume" id="virDomainResume"><code>virDomainResume</code></a></h3><pre class="programlisting">int virDomainResume (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
|
||||
</pre><p>Resume an suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain(). This function may requires privileged access</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain 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="virDomainSave" id="virDomainSave"><code>virDomainSave</code></a></h3><pre class="programlisting">int virDomainSave (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> const char * to)<br />
|
||||
</pre><p>This method will suspend a domain and save its memory contents to a file on disk. After the call, if successful, the domain is not listed as running anymore (this may be a problem). Use virDomainRestore() to restore a domain after saving.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>to</tt></i>:</span></td><td>path for the output file</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="virDomainSetAutostart" id="virDomainSetAutostart"><code>virDomainSetAutostart</code></a></h3><pre class="programlisting">int virDomainSetAutostart (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> int autostart)<br />
|
||||
@ -429,19 +456,25 @@ char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href=
|
||||
</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>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="virNetworkSetAutostart" id="virNetworkSetAutostart"><code>virNetworkSetAutostart</code></a></h3><pre class="programlisting">int virNetworkSetAutostart (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br /> int autostart)<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 />
|
||||
</pre><p>Increment the reference count on the network. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virNetworkFree">virNetworkFree</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 network would increment the reference count.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td></td></tr></tbody></table></div><h3><a name="virNetworkSetAutostart" id="virNetworkSetAutostart"><code>virNetworkSetAutostart</code></a></h3><pre class="programlisting">int virNetworkSetAutostart (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br /> int autostart)<br />
|
||||
</pre><p>Configure the network to be automatically started when the host machine boots.</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>autostart</tt></i>:</span></td><td>whether the network should be automatically started 0 or 1</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="virNetworkUndefine" id="virNetworkUndefine"><code>virNetworkUndefine</code></a></h3><pre class="programlisting">int virNetworkUndefine (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br />
|
||||
</pre><p>Undefine a network but does not stop it if it is running</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="virNodeDeviceFree" id="virNodeDeviceFree"><code>virNodeDeviceFree</code></a></h3><pre class="programlisting">int virNodeDeviceFree (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br />
|
||||
</pre><p>Undefine a network but does not stop it if it is running</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="virNodeDeviceDettach" id="virNodeDeviceDettach"><code>virNodeDeviceDettach</code></a></h3><pre class="programlisting">int virNodeDeviceDettach (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br />
|
||||
</pre><p></p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td></td></tr></tbody></table></div><h3><a name="virNodeDeviceFree" id="virNodeDeviceFree"><code>virNodeDeviceFree</code></a></h3><pre class="programlisting">int virNodeDeviceFree (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br />
|
||||
</pre><p>Drops a reference to the node device, freeing it if this was the last reference.</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>the 0 for success, -1 for error.</td></tr></tbody></table></div><h3><a name="virNodeDeviceGetName" id="virNodeDeviceGetName"><code>virNodeDeviceGetName</code></a></h3><pre class="programlisting">const char * virNodeDeviceGetName (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br />
|
||||
</pre><p>Just return the device name</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 device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the device name or NULL in case of error</td></tr></tbody></table></div><h3><a name="virNodeDeviceGetParent" id="virNodeDeviceGetParent"><code>virNodeDeviceGetParent</code></a></h3><pre class="programlisting">const char * virNodeDeviceGetParent (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br />
|
||||
</pre><p>Accessor for the parent of the device</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 device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the name of the device's parent, or NULL if the device has no parent.</td></tr></tbody></table></div><h3><a name="virNodeDeviceGetXMLDesc" id="virNodeDeviceGetXMLDesc"><code>virNodeDeviceGetXMLDesc</code></a></h3><pre class="programlisting">char * virNodeDeviceGetXMLDesc (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev, <br /> unsigned int flags)<br />
|
||||
</pre><p>Fetch an XML document describing all aspects of the device.</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>flags</tt></i>:</span></td><td>flags for XML generation (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the XML document, or NULL on error</td></tr></tbody></table></div><h3><a name="virNodeDeviceListCaps" id="virNodeDeviceListCaps"><code>virNodeDeviceListCaps</code></a></h3><pre class="programlisting">int virNodeDeviceListCaps (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Lists the names of the capabilities supported by the device.</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 device</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of capability 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>Returns</tt></i>:</span></td><td>the number of capability names listed in @names.</td></tr></tbody></table></div><h3><a name="virNodeDeviceLookupByName" id="virNodeDeviceLookupByName"><code>virNodeDeviceLookupByName</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> virNodeDeviceLookupByName (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * name)<br />
|
||||
</pre><p>Lookup a node device by 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>unique device name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> if found, NULL otherwise.</td></tr></tbody></table></div><h3><a name="virNodeDeviceNumOfCaps" id="virNodeDeviceNumOfCaps"><code>virNodeDeviceNumOfCaps</code></a></h3><pre class="programlisting">int virNodeDeviceNumOfCaps (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br />
|
||||
</pre><p>Accessor for the number of capabilities supported by the device.</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 device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of capabilities supported by the device.</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>Accessor for the number of capabilities supported by the device.</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 device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of capabilities supported by the device.</td></tr></tbody></table></div><h3><a name="virNodeDeviceReAttach" id="virNodeDeviceReAttach"><code>virNodeDeviceReAttach</code></a></h3><pre class="programlisting">int virNodeDeviceReAttach (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br />
|
||||
</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></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></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td></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></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>provides the free memory available on 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>Returns</tt></i>:</span></td><td>the available free memory in kilobytes 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="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>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.</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, and -2 if the operation is not supported (caller decides if that's an error).</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>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 />
|
||||
@ -463,13 +496,14 @@ char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href=
|
||||
</pre><p>Fetch a storage pool based on its globally unique id</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>uuid</tt></i>:</span></td><td>globally unique id of pool to fetch</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 no matching pool is found</td></tr></tbody></table></div><h3><a name="virStoragePoolLookupByUUIDString" id="virStoragePoolLookupByUUIDString"><code>virStoragePoolLookupByUUIDString</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolLookupByUUIDString (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * uuidstr)<br />
|
||||
</pre><p>Fetch a storage pool based on its globally unique id</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>uuidstr</tt></i>:</span></td><td>globally unique id of pool to fetch</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 no matching pool is found</td></tr></tbody></table></div><h3><a name="virStoragePoolLookupByVolume" id="virStoragePoolLookupByVolume"><code>virStoragePoolLookupByVolume</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolLookupByVolume (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
</pre><p>Fetch a storage pool which contains a particular volume</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>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if no matching pool is found</td></tr></tbody></table></div><h3><a name="virStoragePoolNumOfVolumes" id="virStoragePoolNumOfVolumes"><code>virStoragePoolNumOfVolumes</code></a></h3><pre class="programlisting">int virStoragePoolNumOfVolumes (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br />
|
||||
</pre><p>Fetch the number of storage volumes within a 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>the number of storage pools, or -1 on 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>Fetch the number of storage volumes within a 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>the number of storage pools, or -1 on failure</td></tr></tbody></table></div><h3><a name="virStoragePoolRef" id="virStoragePoolRef"><code>virStoragePoolRef</code></a></h3><pre class="programlisting">int virStoragePoolRef (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br />
|
||||
</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></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td></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>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="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 />
|
||||
</pre><p>Release the storage volume handle. The underlying storage volume contains to exist</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>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div><h3><a name="virStorageVolGetConnect" id="virStorageVolGetConnect"><code>virStorageVolGetConnect</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virStorageVolGetConnect (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
</pre><p>Release the storage volume handle. The underlying storage volume continues to exist.</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>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div><h3><a name="virStorageVolGetConnect" id="virStorageVolGetConnect"><code>virStorageVolGetConnect</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virStorageVolGetConnect (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
</pre><p>Provides the connection pointer associated with a storage volume. 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 volume object together.</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 a pool</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="virStorageVolGetInfo" id="virStorageVolGetInfo"><code>virStorageVolGetInfo</code></a></h3><pre class="programlisting">int virStorageVolGetInfo (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br /> <a href="libvirt-libvirt.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a> info)<br />
|
||||
</pre><p>Fetches volatile information about the storage volume such as its current allocation</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>info</tt></i>:</span></td><td>pointer at which to store info</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on failure</td></tr></tbody></table></div><h3><a name="virStorageVolGetKey" id="virStorageVolGetKey"><code>virStorageVolGetKey</code></a></h3><pre class="programlisting">const char * virStorageVolGetKey (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
</pre><p>Fetch the storage volume key. This is globally unique, so the same volume will have the same key no matter what host it is accessed from</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>Returns</tt></i>:</span></td><td>the volume key, or NULL on error</td></tr></tbody></table></div><h3><a name="virStorageVolGetName" id="virStorageVolGetName"><code>virStorageVolGetName</code></a></h3><pre class="programlisting">const char * virStorageVolGetName (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
@ -478,5 +512,6 @@ char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a> (<a href=
|
||||
</pre><p>Fetch an XML document describing all aspects of the storage volume</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>flags for XML generation (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the XML document, or NULL on error</td></tr></tbody></table></div><h3><a name="virStorageVolLookupByKey" id="virStorageVolLookupByKey"><code>virStorageVolLookupByKey</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> virStorageVolLookupByKey (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * key)<br />
|
||||
</pre><p>Fetch a pointer to a storage volume based on its globally unique key</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>key</tt></i>:</span></td><td>globally unique key</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a storage volume, or NULL if not found / error</td></tr></tbody></table></div><h3><a name="virStorageVolLookupByName" id="virStorageVolLookupByName"><code>virStorageVolLookupByName</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> virStorageVolLookupByName (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> const char * name)<br />
|
||||
</pre><p>Fetch a pointer to a storage volume based on its name within a 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>name</tt></i>:</span></td><td>name of storage volume</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a storage volume, or NULL if not found / error</td></tr></tbody></table></div><h3><a name="virStorageVolLookupByPath" id="virStorageVolLookupByPath"><code>virStorageVolLookupByPath</code></a></h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> virStorageVolLookupByPath (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * path)<br />
|
||||
</pre><p>Fetch a pointer to a storage volume based on its locally (host) unique path</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>path</tt></i>:</span></td><td>locally unique path</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a storage volume, or NULL if not found / error</td></tr></tbody></table></div></div></div><div id="footer"><p id="sponsor">
|
||||
</pre><p>Fetch a pointer to a storage volume based on its locally (host) unique path</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>path</tt></i>:</span></td><td>locally unique path</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a storage volume, or NULL if not found / error</td></tr></tbody></table></div><h3><a name="virStorageVolRef" id="virStorageVolRef"><code>virStorageVolRef</code></a></h3><pre class="programlisting">int virStorageVolRef (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
</pre><p>Increment the reference count on the vol. For each additional call to this method, there shall be a corresponding call to <a href="libvirt-libvirt.html#virStorageVolFree">virStorageVolFree</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 vol would increment the reference count.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td></td></tr></tbody></table></div></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>
|
||||
|
File diff suppressed because one or more lines are too long
@ -82,24 +82,28 @@
|
||||
A set of bindings for common languages
|
||||
</li><li>
|
||||
A <a href="CIM/">CIM provider</a> for the DMTF virtualization schema
|
||||
</li><li>
|
||||
A <a href="/qpid/">QMF agent</a> for the AMQP/QPid messaging system
|
||||
</li></ul>
|
||||
<h2>libvirt supports:</h2>
|
||||
<ul><li>
|
||||
The <a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen</a> hypervisor
|
||||
on Linux and Solaris hosts.
|
||||
</li><li>
|
||||
The <a href="http://fabrice.bellard.free.fr/qemu/">QEMU</a> emulator
|
||||
The <a href="http://bellard.org/qemu/">QEMU</a> emulator
|
||||
</li><li>
|
||||
The <a href="http://kvm.qumranet.com/kvmwiki">KVM</a> Linux hypervisor
|
||||
</li><li>
|
||||
The <a href="http://lxc.sourceforge.net/">LXC</a> Linux container system
|
||||
</li><li>
|
||||
The <a href="http://openvz.org/">OpenVZ</a> Linux container system
|
||||
</li><li>
|
||||
The <a href="http://user-mode-linux.sourceforge.net/">User Mode Linux</a> paravirtualized kernel
|
||||
</li><li>
|
||||
Storage on IDE/SCSI/USB disks, FibreChannel, LVM, iSCSI, NFS and filesystems
|
||||
</li></ul>
|
||||
<h2>libvirt provides:</h2>
|
||||
<ul><li>Remote management using TLS encryption and x509 certificates</li><li>Remote management authenticating with Kerberos and SASL</li><li>Local access control using PolicyKit</li><li>Zero-conf discovery using Avahi multicast-DNS</li><li>Management of virtual machines, virtual networks and storage</li></ul>
|
||||
<ul><li>Remote management using TLS encryption and x509 certificates</li><li>Remote management authenticating with Kerberos and SASL</li><li>Local access control using PolicyKit</li><li>Zero-conf discovery using Avahi multicast-DNS</li><li>Management of virtual machines, virtual networks and storage</li><li>Portable client API for Linux, Solaris and Windows</li></ul>
|
||||
<p class="image">
|
||||
<img src="libvirtLogo.png" alt="libvirt Logo" /></p>
|
||||
</div>
|
||||
|
@ -25,6 +25,9 @@
|
||||
<li>
|
||||
A <a href="CIM/">CIM provider</a> for the DMTF virtualization schema
|
||||
</li>
|
||||
<li>
|
||||
A <a href="/qpid/">QMF agent</a> for the AMQP/QPid messaging system
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>libvirt supports:</h2>
|
||||
@ -35,7 +38,7 @@
|
||||
on Linux and Solaris hosts.
|
||||
</li>
|
||||
<li>
|
||||
The <a href="http://fabrice.bellard.free.fr/qemu/">QEMU</a> emulator
|
||||
The <a href="http://bellard.org/qemu/">QEMU</a> emulator
|
||||
</li>
|
||||
<li>
|
||||
The <a href="http://kvm.qumranet.com/kvmwiki">KVM</a> Linux hypervisor
|
||||
@ -46,6 +49,9 @@
|
||||
<li>
|
||||
The <a href="http://openvz.org/">OpenVZ</a> Linux container system
|
||||
</li>
|
||||
<li>
|
||||
The <a href="http://user-mode-linux.sourceforge.net/">User Mode Linux</a> paravirtualized kernel
|
||||
</li>
|
||||
<li>
|
||||
Storage on IDE/SCSI/USB disks, FibreChannel, LVM, iSCSI, NFS and filesystems
|
||||
</li>
|
||||
@ -59,6 +65,7 @@
|
||||
<li>Local access control using PolicyKit</li>
|
||||
<li>Zero-conf discovery using Avahi multicast-DNS</li>
|
||||
<li>Management of virtual machines, virtual networks and storage</li>
|
||||
<li>Portable client API for Linux, Solaris and Windows</li>
|
||||
</ul>
|
||||
|
||||
<p class="image">
|
||||
|
@ -47,6 +47,10 @@
|
||||
<div>
|
||||
<span class="active">Architecture</span>
|
||||
<ul class="l2"><li>
|
||||
<div>
|
||||
<a title="Terminology and goals of libvirt API" class="inactive" href="goals.html">Goals</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Managing virtual machines" class="inactive" href="archdomain.html">Domains</a>
|
||||
</div>
|
||||
@ -110,36 +114,12 @@
|
||||
</div>
|
||||
<div id="content">
|
||||
<h1>Architecture</h1>
|
||||
<p>Libvirt is a C toolkit to interact with the virtualization capabilities of
|
||||
recent versions of Linux (and other OSes), but libvirt won't try to provide
|
||||
all possible interfaces for interacting with the virtualization features.</p>
|
||||
<p>To avoid ambiguity about the terms used here here are the definitions for
|
||||
some of the specific concepts used in libvirt documentation:</p>
|
||||
<ul><li>a <strong>node</strong> is a single physical machine</li><li>an <strong>hypervisor</strong> is a layer of software allowing to
|
||||
virtualize a node in a set of virtual machines with possibly different
|
||||
configurations than the node itself</li><li>a <strong>domain</strong> is an instance of an operating system running
|
||||
on a virtualized machine provided by the hypervisor</li></ul>
|
||||
<p class="image">
|
||||
<img alt="Hypervisor and domains running on a node" src="node.gif" /></p>
|
||||
<p>Now we can define the goal of libvirt: to provide the lowest possible
|
||||
generic and stable layer to manage domains on a node.</p>
|
||||
<p>This implies the following:</p>
|
||||
<ul><li>the API should not be targeted to a single virtualization environment
|
||||
though Xen is the current default, which also means that some very
|
||||
specific capabilities which are not generic enough may not be provided as
|
||||
libvirt APIs</li><li>the API should allow to do efficiently and cleanly all the operations
|
||||
needed to manage domains on a node</li><li>the API will not try to provide high level multi-nodes management
|
||||
features like load balancing, though they could be implemented on top of
|
||||
libvirt</li><li>stability of the API is a big concern, libvirt should isolate
|
||||
applications from the frequent changes expected at the lower level of the
|
||||
virtualization framework</li></ul>
|
||||
<p>So libvirt should be a building block for higher level management tools
|
||||
and for applications focusing on virtualization of a single node (the only
|
||||
exception being domain migration between node capabilities which may need to
|
||||
be added at the libvirt level). Where possible libvirt should be extendable
|
||||
to be able to provide the same API for remote nodes, however this is not the
|
||||
case at the moment, the code currently handle only local node accesses
|
||||
(extension for remote access support is being worked on, see <a href="bugs.html">the mailing list</a> discussions about it).</p>
|
||||
<p>Libvirt is a C toolkit manage the virtualization capabilities
|
||||
of recent versions of Linux (and other OSes).</p>
|
||||
<p>To avoid ambiguity about the goals, terms and specific concepts used
|
||||
in libvirt documentation please see the <a href="goals.html">Goal
|
||||
section</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
|
@ -2,45 +2,11 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1>Architecture</h1>
|
||||
<p>Libvirt is a C toolkit to interact with the virtualization capabilities of
|
||||
recent versions of Linux (and other OSes), but libvirt won't try to provide
|
||||
all possible interfaces for interacting with the virtualization features.</p>
|
||||
<p>To avoid ambiguity about the terms used here here are the definitions for
|
||||
some of the specific concepts used in libvirt documentation:</p>
|
||||
<ul>
|
||||
<li>a <strong>node</strong> is a single physical machine</li>
|
||||
<li>an <strong>hypervisor</strong> is a layer of software allowing to
|
||||
virtualize a node in a set of virtual machines with possibly different
|
||||
configurations than the node itself</li>
|
||||
<li>a <strong>domain</strong> is an instance of an operating system running
|
||||
on a virtualized machine provided by the hypervisor</li>
|
||||
</ul>
|
||||
<p class="image">
|
||||
<img alt="Hypervisor and domains running on a node" src="node.gif"/>
|
||||
<p>Libvirt is a C toolkit manage the virtualization capabilities
|
||||
of recent versions of Linux (and other OSes).</p>
|
||||
<p>To avoid ambiguity about the goals, terms and specific concepts used
|
||||
in libvirt documentation please see the <a href="goals.html">Goal
|
||||
section</a>.
|
||||
</p>
|
||||
<p>Now we can define the goal of libvirt: to provide the lowest possible
|
||||
generic and stable layer to manage domains on a node.</p>
|
||||
<p>This implies the following:</p>
|
||||
<ul>
|
||||
<li>the API should not be targeted to a single virtualization environment
|
||||
though Xen is the current default, which also means that some very
|
||||
specific capabilities which are not generic enough may not be provided as
|
||||
libvirt APIs</li>
|
||||
<li>the API should allow to do efficiently and cleanly all the operations
|
||||
needed to manage domains on a node</li>
|
||||
<li>the API will not try to provide high level multi-nodes management
|
||||
features like load balancing, though they could be implemented on top of
|
||||
libvirt</li>
|
||||
<li>stability of the API is a big concern, libvirt should isolate
|
||||
applications from the frequent changes expected at the lower level of the
|
||||
virtualization framework</li>
|
||||
</ul>
|
||||
<p>So libvirt should be a building block for higher level management tools
|
||||
and for applications focusing on virtualization of a single node (the only
|
||||
exception being domain migration between node capabilities which may need to
|
||||
be added at the libvirt level). Where possible libvirt should be extendable
|
||||
to be able to provide the same API for remote nodes, however this is not the
|
||||
case at the moment, the code currently handle only local node accesses
|
||||
(extension for remote access support is being worked on, see <a href="bugs.html">the mailing list</a> discussions about it).</p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -8,13 +8,16 @@
|
||||
<exports symbol='VIR_NODEINFO_MAXCPUS' type='macro'/>
|
||||
<exports symbol='LIBVIR_VERSION_NUMBER' type='macro'/>
|
||||
<exports symbol='VIR_USE_CPU' type='macro'/>
|
||||
<exports symbol='VIR_SECURITY_DOI_BUFLEN' type='macro'/>
|
||||
<exports symbol='VIR_CPU_MAPLEN' type='macro'/>
|
||||
<exports symbol='VIR_UUID_BUFLEN' type='macro'/>
|
||||
<exports symbol='VIR_SECURITY_LABEL_BUFLEN' type='macro'/>
|
||||
<exports symbol='VIR_CPU_USABLE' type='macro'/>
|
||||
<exports symbol='VIR_COPY_CPUMAP' type='macro'/>
|
||||
<exports symbol='VIR_DOMAIN_SCHED_FIELD_LENGTH' type='macro'/>
|
||||
<exports symbol='VIR_SECURITY_MODEL_BUFLEN' type='macro'/>
|
||||
<exports symbol='VIR_UUID_STRING_BUFLEN' type='macro'/>
|
||||
<exports symbol='VIR_GET_CPUMAP' type='macro'/>
|
||||
<exports symbol='VIR_UUID_BUFLEN' type='macro'/>
|
||||
<exports symbol='VIR_UNUSE_CPU' type='macro'/>
|
||||
<exports symbol='VIR_DOMAIN_EVENT_DEFINED' type='enum'/>
|
||||
<exports symbol='VIR_CRED_EXTERNAL' type='enum'/>
|
||||
@ -107,6 +110,7 @@
|
||||
<exports symbol='virConnectAuthPtr' type='typedef'/>
|
||||
<exports symbol='virStorageVolInfo' type='typedef'/>
|
||||
<exports symbol='virSchedParameterType' type='typedef'/>
|
||||
<exports symbol='virSecurityLabel' type='typedef'/>
|
||||
<exports symbol='virStorageVolInfoPtr' type='typedef'/>
|
||||
<exports symbol='virConnectCredentialPtr' type='typedef'/>
|
||||
<exports symbol='virStoragePoolPtr' type='typedef'/>
|
||||
@ -129,6 +133,7 @@
|
||||
<exports symbol='virSchedParameterPtr' type='typedef'/>
|
||||
<exports symbol='virConnectAuth' type='typedef'/>
|
||||
<exports symbol='virConnectCredential' type='typedef'/>
|
||||
<exports symbol='virSecurityModelPtr' type='typedef'/>
|
||||
<exports symbol='virDomainEventSuspendedDetailType' type='typedef'/>
|
||||
<exports symbol='virVcpuInfoPtr' type='typedef'/>
|
||||
<exports symbol='virStoragePoolBuildFlags' type='typedef'/>
|
||||
@ -140,13 +145,17 @@
|
||||
<exports symbol='virStoragePoolState' type='typedef'/>
|
||||
<exports symbol='virStoragePoolInfoPtr' type='typedef'/>
|
||||
<exports symbol='virDomainCreateFlags' type='typedef'/>
|
||||
<exports symbol='virSecurityLabelPtr' type='typedef'/>
|
||||
<exports symbol='virSecurityModel' type='typedef'/>
|
||||
<exports symbol='_virDomainInfo' type='struct'/>
|
||||
<exports symbol='_virConnectAuth' type='struct'/>
|
||||
<exports symbol='_virVcpuInfo' type='struct'/>
|
||||
<exports symbol='_virDomainInterfaceStats' type='struct'/>
|
||||
<exports symbol='_virStoragePoolInfo' type='struct'/>
|
||||
<exports symbol='_virConnectCredential' type='struct'/>
|
||||
<exports symbol='_virSecurityLabel' type='struct'/>
|
||||
<exports symbol='_virStorageVolInfo' type='struct'/>
|
||||
<exports symbol='_virSecurityModel' type='struct'/>
|
||||
<exports symbol='_virDomainBlockStats' type='struct'/>
|
||||
<exports symbol='_virNodeInfo' type='struct'/>
|
||||
<exports symbol='_virSchedParameter' type='struct'/>
|
||||
@ -163,7 +172,8 @@
|
||||
<exports symbol='virInitialize' type='function'/>
|
||||
<exports symbol='virNodeDeviceGetName' type='function'/>
|
||||
<exports symbol='virStoragePoolSetAutostart' type='function'/>
|
||||
<exports symbol='virStorageVolCreateXML' type='function'/>
|
||||
<exports symbol='virNodeDeviceDettach' type='function'/>
|
||||
<exports symbol='virDomainGetSecurityLabel' type='function'/>
|
||||
<exports symbol='virConnectDomainEventDeregister' type='function'/>
|
||||
<exports symbol='virDomainGetSchedulerParameters' type='function'/>
|
||||
<exports symbol='virDomainLookupByUUIDString' type='function'/>
|
||||
@ -173,17 +183,18 @@
|
||||
<exports symbol='virStoragePoolGetConnect' type='function'/>
|
||||
<exports symbol='virConnectGetVersion' type='function'/>
|
||||
<exports symbol='virDomainFree' type='function'/>
|
||||
<exports symbol='virStorageVolRef' type='function'/>
|
||||
<exports symbol='virStoragePoolGetName' type='function'/>
|
||||
<exports symbol='virDomainSetAutostart' type='function'/>
|
||||
<exports symbol='virStoragePoolDefineXML' type='function'/>
|
||||
<exports symbol='virStorageVolLookupByPath' type='function'/>
|
||||
<exports symbol='virStorageVolLookupByName' type='function'/>
|
||||
<exports symbol='virDomainCreateLinux' type='function'/>
|
||||
<exports symbol='virNetworkCreate' type='function'/>
|
||||
<exports symbol='virDomainSetMaxMemory' type='function'/>
|
||||
<exports symbol='virEventRegisterImpl' type='function'/>
|
||||
<exports symbol='virDomainMigrate' type='function'/>
|
||||
<exports symbol='virDomainSuspend' type='function'/>
|
||||
<exports symbol='virNetworkCreate' type='function'/>
|
||||
<exports symbol='virDomainCreateLinux' type='function'/>
|
||||
<exports symbol='virNodeDeviceGetXMLDesc' type='function'/>
|
||||
<exports symbol='virEventUpdateHandleFunc' type='function'/>
|
||||
<exports symbol='virDomainDestroy' type='function'/>
|
||||
@ -202,6 +213,7 @@
|
||||
<exports symbol='virStorageVolGetXMLDesc' type='function'/>
|
||||
<exports symbol='virDomainSetSchedulerParameters' type='function'/>
|
||||
<exports symbol='virConnectGetType' type='function'/>
|
||||
<exports symbol='virStorageVolCreateXML' type='function'/>
|
||||
<exports symbol='virDomainSave' type='function'/>
|
||||
<exports symbol='virDomainCreate' type='function'/>
|
||||
<exports symbol='virConnectListDomains' type='function'/>
|
||||
@ -226,6 +238,7 @@
|
||||
<exports symbol='virConnectGetHostname' type='function'/>
|
||||
<exports symbol='virEventRemoveTimeoutFunc' type='function'/>
|
||||
<exports symbol='virDomainGetName' type='function'/>
|
||||
<exports symbol='virStoragePoolRef' type='function'/>
|
||||
<exports symbol='virNetworkGetXMLDesc' type='function'/>
|
||||
<exports symbol='virConnectNumOfStoragePools' type='function'/>
|
||||
<exports symbol='virNetworkGetName' type='function'/>
|
||||
@ -234,6 +247,7 @@
|
||||
<exports symbol='virDomainLookupByName' type='function'/>
|
||||
<exports symbol='virConnectFindStoragePoolSources' type='function'/>
|
||||
<exports symbol='virDomainPinVcpu' type='function'/>
|
||||
<exports symbol='virNodeGetSecurityModel' type='function'/>
|
||||
<exports symbol='virDomainRestore' type='function'/>
|
||||
<exports symbol='virStorageVolGetPath' type='function'/>
|
||||
<exports symbol='virNetworkLookupByUUIDString' type='function'/>
|
||||
@ -244,6 +258,7 @@
|
||||
<exports symbol='virDomainMemoryPeek' type='function'/>
|
||||
<exports symbol='virNetworkLookupByUUID' type='function'/>
|
||||
<exports symbol='virConnectListDefinedNetworks' type='function'/>
|
||||
<exports symbol='virConnectRef' type='function'/>
|
||||
<exports symbol='virDomainGetUUID' type='function'/>
|
||||
<exports symbol='virNetworkCreateXML' type='function'/>
|
||||
<exports symbol='virDomainGetVcpus' type='function'/>
|
||||
@ -251,6 +266,7 @@
|
||||
<exports symbol='virStoragePoolGetInfo' type='function'/>
|
||||
<exports symbol='virDomainResume' type='function'/>
|
||||
<exports symbol='virNodeListDevices' type='function'/>
|
||||
<exports symbol='virNetworkRef' type='function'/>
|
||||
<exports symbol='virStoragePoolRefresh' type='function'/>
|
||||
<exports symbol='virConnectNumOfDefinedDomains' type='function'/>
|
||||
<exports symbol='virStorageVolLookupByKey' type='function'/>
|
||||
@ -261,9 +277,11 @@
|
||||
<exports symbol='virDomainGetMaxVcpus' type='function'/>
|
||||
<exports symbol='virEventHandleCallback' type='function'/>
|
||||
<exports symbol='virDomainGetSchedulerType' type='function'/>
|
||||
<exports symbol='virNodeDeviceReset' type='function'/>
|
||||
<exports symbol='virDomainDetachDevice' type='function'/>
|
||||
<exports symbol='virStoragePoolNumOfVolumes' type='function'/>
|
||||
<exports symbol='virStoragePoolGetUUIDString' type='function'/>
|
||||
<exports symbol='virNodeDeviceReAttach' type='function'/>
|
||||
<exports symbol='virStoragePoolUndefine' type='function'/>
|
||||
<exports symbol='virConnectAuthCallbackPtr' type='function'/>
|
||||
<exports symbol='virDomainAttachDevice' type='function'/>
|
||||
@ -292,7 +310,9 @@
|
||||
<exports symbol='virNodeDeviceGetParent' type='function'/>
|
||||
<exports symbol='virConnectOpen' type='function'/>
|
||||
<exports symbol='virDomainCreateXML' type='function'/>
|
||||
<exports symbol='virNodeDeviceRef' type='function'/>
|
||||
<exports symbol='virDomainSetVcpus' type='function'/>
|
||||
<exports symbol='virDomainRef' type='function'/>
|
||||
<exports symbol='virConnectDomainEventRegister' type='function'/>
|
||||
<exports symbol='virDomainGetID' type='function'/>
|
||||
<exports symbol='virDomainBlockPeek' type='function'/>
|
||||
@ -338,6 +358,7 @@
|
||||
<exports symbol='VIR_ERR_OPERATION_DENIED' type='enum'/>
|
||||
<exports symbol='VIR_FROM_STORAGE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_KERNEL' type='enum'/>
|
||||
<exports symbol='VIR_WAR_NO_STORAGE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_GNUTLS_ERROR' type='enum'/>
|
||||
<exports symbol='VIR_ERR_POST_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_ERR_OS_TYPE' type='enum'/>
|
||||
@ -346,6 +367,7 @@
|
||||
<exports symbol='VIR_ERR_INVALID_CONN' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NONE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_OK' type='enum'/>
|
||||
<exports symbol='VIR_FROM_NETWORK' type='enum'/>
|
||||
<exports symbol='VIR_ERR_XML_DETAIL' type='enum'/>
|
||||
<exports symbol='VIR_FROM_NET' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XENXM' type='enum'/>
|
||||
@ -362,14 +384,14 @@
|
||||
<exports symbol='VIR_FROM_DOMAIN' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_TARGET' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NETWORK_EXIST' type='enum'/>
|
||||
<exports symbol='VIR_WAR_NO_STORAGE' type='enum'/>
|
||||
<exports symbol='VIR_FROM_SECURITY' type='enum'/>
|
||||
<exports symbol='VIR_ERR_WRITE_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INTERNAL_ERROR' type='enum'/>
|
||||
<exports symbol='VIR_ERR_CONF_SYNTAX' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_STORAGE_POOL' type='enum'/>
|
||||
<exports symbol='VIR_FROM_REMOTE' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_SUPPORT' type='enum'/>
|
||||
<exports symbol='VIR_FROM_NETWORK' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NO_SECURITY_MODEL' type='enum'/>
|
||||
<exports symbol='VIR_FROM_QEMU' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XEND' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_STORAGE_VOL' type='enum'/>
|
||||
@ -391,6 +413,7 @@
|
||||
<exports symbol='virErrorNumber' type='typedef'/>
|
||||
<exports symbol='virError' type='typedef'/>
|
||||
<exports symbol='_virError' type='struct'/>
|
||||
<exports symbol='virFreeError' type='function'/>
|
||||
<exports symbol='virCopyLastError' type='function'/>
|
||||
<exports symbol='virConnSetErrorFunc' type='function'/>
|
||||
<exports symbol='virResetLastError' type='function'/>
|
||||
@ -402,6 +425,7 @@
|
||||
<exports symbol='virSetErrorFunc' type='function'/>
|
||||
<exports symbol='virConnCopyLastError' type='function'/>
|
||||
<exports symbol='virConnResetLastError' type='function'/>
|
||||
<exports symbol='virSaveLastError' type='function'/>
|
||||
</file>
|
||||
</files>
|
||||
<symbols>
|
||||
@ -439,6 +463,15 @@
|
||||
<info>This macro is to calculate the total number of CPUs supported but not necessary active in the host.</info>
|
||||
<arg name='nodeinfo' info='virNodeInfo instance'/>
|
||||
</macro>
|
||||
<macro name='VIR_SECURITY_DOI_BUFLEN' file='libvirt'>
|
||||
<info>Macro providing the maximum length of the virSecurityModel doi string.</info>
|
||||
</macro>
|
||||
<macro name='VIR_SECURITY_LABEL_BUFLEN' file='libvirt'>
|
||||
<info>Macro providing the maximum length of the virSecurityLabel label string. Note that this value is based on that used by Labeled NFS.</info>
|
||||
</macro>
|
||||
<macro name='VIR_SECURITY_MODEL_BUFLEN' file='libvirt'>
|
||||
<info>Macro providing the maximum length of the virSecurityModel model string.</info>
|
||||
</macro>
|
||||
<macro name='VIR_UNUSE_CPU' file='libvirt'>
|
||||
<info>This macro is to be used in conjunction with virDomainPinVcpu() API. USE_CPU macro reset the bit (CPU not usable) of the related cpu in cpumap.</info>
|
||||
<arg name='cpumap' info='pointer to a bit map of real CPUs (in 8-bit bytes) (IN/OUT)'/>
|
||||
@ -530,9 +563,10 @@
|
||||
<enum name='VIR_ERR_NO_MEMORY' file='virterror' value='2' type='virErrorNumber' info='memory allocation failure'/>
|
||||
<enum name='VIR_ERR_NO_NAME' file='virterror' value='21' type='virErrorNumber' info='missing domain name information'/>
|
||||
<enum name='VIR_ERR_NO_NETWORK' file='virterror' value='43' type='virErrorNumber' info='network not found'/>
|
||||
<enum name='VIR_ERR_NO_NODE_DEVICE' file='virterror' value='53' type='virErrorNumber' info=' node device not found'/>
|
||||
<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_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'/>
|
||||
<enum name='VIR_ERR_NO_STORAGE_VOL' file='virterror' value='50' type='virErrorNumber' info='storage pool not found'/>
|
||||
@ -574,6 +608,7 @@
|
||||
<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_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'/>
|
||||
<enum name='VIR_FROM_STORAGE' file='virterror' value='18' type='virErrorDomain' info='Error from storage driver'/>
|
||||
@ -583,7 +618,7 @@
|
||||
<enum name='VIR_FROM_XEND' file='virterror' value='2' type='virErrorDomain' info='Error at connection with xend daemon'/>
|
||||
<enum name='VIR_FROM_XENSTORE' file='virterror' value='3' type='virErrorDomain' info='Error at connection with xen store'/>
|
||||
<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_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_MIGRATE_LIVE' file='libvirt' value='1' type='virDomainMigrateFlags' info=' live migration'/>
|
||||
@ -728,6 +763,14 @@ see note above'/>
|
||||
<info>a virSchedParameterPtr is a pointer to a virSchedParameter structure.</info>
|
||||
</typedef>
|
||||
<typedef name='virSchedParameterType' 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>
|
||||
</typedef>
|
||||
<struct name='virSecurityModel' file='libvirt' type='struct _virSecurityModel'/>
|
||||
<typedef name='virSecurityModelPtr' file='libvirt' type='virSecurityModel *'>
|
||||
<info>a virSecurityModelPtr is a pointer to a virSecurityModel.</info>
|
||||
</typedef>
|
||||
<struct name='virStoragePool' file='libvirt' type='struct _virStoragePool'/>
|
||||
<typedef name='virStoragePoolBuildFlags' file='libvirt' type='enum'/>
|
||||
<typedef name='virStoragePoolDeleteFlags' file='libvirt' type='enum'/>
|
||||
@ -764,18 +807,18 @@ see note above'/>
|
||||
<typedef name='virVcpuState' file='libvirt' type='enum'/>
|
||||
<variable name='virConnectAuthPtrDefault' file='libvirt' type='virConnectAuthPtr'/>
|
||||
<function name='virConnCopyLastError' file='virterror' module='virterror'>
|
||||
<info>Copy the content of the last error caught on that connection One will need to free the result with virResetError()</info>
|
||||
<info>Copy the content of the last error caught on that connection This method is not protected against access from multiple threads. In a multi-threaded application, always use the global virGetLastError() API which is backed by thread local storage. If the connection object was discovered to be invalid by an API call, then the error will be reported against the global error object. Since 0.6.0, all errors reported in the per-connection object are also duplicated in the global error object. As such an application can always use virGetLastError(). This method remains for backwards compatability. One will need to free the result with virResetError()</info>
|
||||
<return type='int' info='0 if no error was found and the error code otherwise and -1 in case of parameter error.'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='to' type='virErrorPtr' info='target to receive the copy'/>
|
||||
</function>
|
||||
<function name='virConnGetLastError' file='virterror' module='virterror'>
|
||||
<info>Provide a pointer to the last error caught on that connection Simpler but may not be suitable for multithreaded accesses, in which case use virConnCopyLastError()</info>
|
||||
<info>Provide a pointer to the last error caught on that connection This method is not protected against access from multiple threads. In a multi-threaded application, always use the global virGetLastError() API which is backed by thread local storage. If the connection object was discovered to be invalid by an API call, then the error will be reported against the global error object. Since 0.6.0, all errors reported in the per-connection object are also duplicated in the global error object. As such an application can always use virGetLastError(). This method remains for backwards compatability.</info>
|
||||
<return type='virErrorPtr' info='a pointer to the last error or NULL if none occurred.'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
</function>
|
||||
<function name='virConnResetLastError' file='virterror' module='virterror'>
|
||||
<info>Reset the last error caught on that connection</info>
|
||||
<info>The error object is kept in thread local storage, so separate threads can safely access this concurrently. Reset the last error caught on that connection</info>
|
||||
<return type='void'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
</function>
|
||||
@ -814,8 +857,8 @@ see note above'/>
|
||||
<arg name='cb' type='virConnectDomainEventCallback' info='callback to the function handling domain events'/>
|
||||
</function>
|
||||
<function name='virConnectDomainEventRegister' file='libvirt' module='libvirt'>
|
||||
<info>Adds a Domain Event Callback. Registering for a domain callback will enable delivery of the events</info>
|
||||
<return type='int' info='0 on success, -1 on failure'/>
|
||||
<info>Adds a Domain Event Callback. Registering for a domain callback will enable delivery of the events The virDomainPtr object handle passed into the callback upon delivery of an event is only valid for the duration of execution of the callback. If the callback wishes to keep the domain object after the callback</info>
|
||||
<return type='int' info='it shall take a reference to it, by calling virDomainRef. The reference can be released once the object is no longer required by calling virDomainFree. Returns 0 on success, -1 on failure'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the connection'/>
|
||||
<arg name='cb' type='virConnectDomainEventCallback' info='callback to the function handling domain events'/>
|
||||
<arg name='opaque' type='void *' info='opaque data to pass on to the callback'/>
|
||||
@ -950,8 +993,13 @@ see note above'/>
|
||||
<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>
|
||||
<function name='virConnectRef' file='libvirt' module='libvirt'>
|
||||
<info>Increment the reference count on the connection. For each additional call to this method, there shall be a corresponding call to virConnectClose 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.</info>
|
||||
<return type='int' info=''/>
|
||||
<arg name='conn' type='virConnectPtr' info='the connection to hold a reference on'/>
|
||||
</function>
|
||||
<function name='virCopyLastError' file='virterror' module='virterror'>
|
||||
<info>Copy the content of the last error caught at the library level One will need to free the result with virResetError()</info>
|
||||
<info>Copy the content of the last error caught at the library level The error object is kept in thread local storage, so separate threads can safely access this concurrently. One will need to free the result with virResetError()</info>
|
||||
<return type='int' info='0 if no error was found and the error code otherwise and -1 in case of parameter error.'/>
|
||||
<arg name='to' type='virErrorPtr' info='target to receive the copy'/>
|
||||
</function>
|
||||
@ -1087,6 +1135,12 @@ see note above'/>
|
||||
<arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
|
||||
<arg name='nparams' type='int *' info='number of scheduler parameters(return value)'/>
|
||||
</function>
|
||||
<function name='virDomainGetSecurityLabel' file='libvirt' module='libvirt'>
|
||||
<info>Extract security label of an active domain.</info>
|
||||
<return type='int' info='0 in case of success, -1 in case of failure, and -2 if the operation is not supported (caller decides if that's an error).'/>
|
||||
<arg name='domain' type='virDomainPtr' info='a domain object'/>
|
||||
<arg name='seclabel' type='virSecurityLabelPtr' info='pointer to a virSecurityLabel structure'/>
|
||||
</function>
|
||||
<function name='virDomainGetUUID' file='libvirt' module='libvirt'>
|
||||
<info>Get the UUID for a domain</info>
|
||||
<return type='int' info='-1 in case of error, 0 in case of success'/>
|
||||
@ -1179,6 +1233,11 @@ see note above'/>
|
||||
<arg name='domain' type='virDomainPtr' info='a domain object'/>
|
||||
<arg name='flags' type='unsigned int' info='extra flags for the reboot operation, not used yet'/>
|
||||
</function>
|
||||
<function name='virDomainRef' file='libvirt' module='libvirt'>
|
||||
<info>Increment the reference count on the domain. For each additional call to this method, there shall be a corresponding call to virDomainFree 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 domain would increment the reference count.</info>
|
||||
<return type='int' info=''/>
|
||||
<arg name='domain' type='virDomainPtr' info=''/>
|
||||
</function>
|
||||
<function name='virDomainRestore' file='libvirt' module='libvirt'>
|
||||
<info>This method will restore a domain saved to disk by virDomainSave().</info>
|
||||
<return type='int' info='0 in case of success and -1 in case of failure.'/>
|
||||
@ -1316,8 +1375,13 @@ see note above'/>
|
||||
<return type='void'/>
|
||||
<arg name='opaque' type='void *' info=''/>
|
||||
</functype>
|
||||
<function name='virFreeError' file='virterror' module='virterror'>
|
||||
<info>Resets and frees the given error.</info>
|
||||
<return type='void'/>
|
||||
<arg name='err' type='virErrorPtr' info='error to free'/>
|
||||
</function>
|
||||
<function name='virGetLastError' file='virterror' module='virterror'>
|
||||
<info>Provide a pointer to the last error caught at the library level Simpler but may not be suitable for multithreaded accesses, in which case use virCopyLastError()</info>
|
||||
<info>Provide a pointer to the last error caught at the library level The error object is kept in thread local storage, so separate threads can safely access this concurrently.</info>
|
||||
<return type='virErrorPtr' info='a pointer to the last error or NULL if none occurred.'/>
|
||||
</function>
|
||||
<function name='virGetVersion' file='libvirt' module='libvirt'>
|
||||
@ -1415,6 +1479,11 @@ see note above'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='uuidstr' type='const char *' info='the string UUID for the network'/>
|
||||
</function>
|
||||
<function name='virNetworkRef' file='libvirt' module='libvirt'>
|
||||
<info>Increment the reference count on the network. For each additional call to this method, there shall be a corresponding call to virNetworkFree 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 network would increment the reference count.</info>
|
||||
<return type='int' info=''/>
|
||||
<arg name='network' type='virNetworkPtr' info=''/>
|
||||
</function>
|
||||
<function name='virNetworkSetAutostart' file='libvirt' module='libvirt'>
|
||||
<info>Configure the network to be automatically started when the host machine boots.</info>
|
||||
<return type='int' info='-1 in case of error, 0 in case of success'/>
|
||||
@ -1426,6 +1495,11 @@ see note above'/>
|
||||
<return type='int' info='0 in case of success, -1 in case of error'/>
|
||||
<arg name='network' type='virNetworkPtr' info='pointer to a defined network'/>
|
||||
</function>
|
||||
<function name='virNodeDeviceDettach' file='libvirt' module='libvirt'>
|
||||
<info></info>
|
||||
<return type='int' info=''/>
|
||||
<arg name='dev' type='virNodeDevicePtr' info=''/>
|
||||
</function>
|
||||
<function name='virNodeDeviceFree' file='libvirt' module='libvirt'>
|
||||
<info>Drops a reference to the node device, freeing it if this was the last reference.</info>
|
||||
<return type='int' info='the 0 for success, -1 for error.'/>
|
||||
@ -1465,6 +1539,21 @@ see note above'/>
|
||||
<return type='int' info='the number of capabilities supported by the device.'/>
|
||||
<arg name='dev' type='virNodeDevicePtr' info='the device'/>
|
||||
</function>
|
||||
<function name='virNodeDeviceReAttach' file='libvirt' module='libvirt'>
|
||||
<info>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.</info>
|
||||
<return type='int' info=''/>
|
||||
<arg name='dev' type='virNodeDevicePtr' info='pointer to the node device'/>
|
||||
</function>
|
||||
<function name='virNodeDeviceRef' file='libvirt' module='libvirt'>
|
||||
<info>Increment the reference count on the dev. For each additional call to this method, there shall be a corresponding call to virNodeDeviceFree 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.</info>
|
||||
<return type='int' info=''/>
|
||||
<arg name='dev' type='virNodeDevicePtr' info=''/>
|
||||
</function>
|
||||
<function name='virNodeDeviceReset' file='libvirt' module='libvirt'>
|
||||
<info>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.</info>
|
||||
<return type='int' info=''/>
|
||||
<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>
|
||||
<return type='int' info='the number of entries filled in freeMems, or -1 in case of error.'/>
|
||||
@ -1484,6 +1573,12 @@ see note above'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='info' type='virNodeInfoPtr' info='pointer to a virNodeInfo structure allocated by the user'/>
|
||||
</function>
|
||||
<function name='virNodeGetSecurityModel' file='libvirt' module='libvirt'>
|
||||
<info>Extract the security model of a hypervisor.</info>
|
||||
<return type='int' info='0 in case of success, -1 in case of failure, and -2 if the operation is not supported (caller decides if that's an error).'/>
|
||||
<arg name='conn' type='virConnectPtr' info='a connection object'/>
|
||||
<arg name='secmodel' type='virSecurityModelPtr' info='pointer to a virSecurityModel structure'/>
|
||||
</function>
|
||||
<function name='virNodeListDevices' file='libvirt' module='libvirt'>
|
||||
<info>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</info>
|
||||
<return type='int' info='the number of node devices found or -1 in case of error'/>
|
||||
@ -1506,9 +1601,13 @@ see note above'/>
|
||||
<arg name='err' type='virErrorPtr' info='pointer to the virError to clean up'/>
|
||||
</function>
|
||||
<function name='virResetLastError' file='virterror' module='virterror'>
|
||||
<info>Reset the last error caught at the library level.</info>
|
||||
<info>Reset the last error caught at the library level. The error object is kept in thread local storage, so separate threads can safely access this concurrently, only resetting their own error object.</info>
|
||||
<return type='void'/>
|
||||
</function>
|
||||
<function name='virSaveLastError' file='virterror' module='virterror'>
|
||||
<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='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'/>
|
||||
@ -1632,6 +1731,11 @@ see note above'/>
|
||||
<return type='int' info='the number of storage pools, or -1 on failure'/>
|
||||
<arg name='pool' type='virStoragePoolPtr' info='pointer to storage pool'/>
|
||||
</function>
|
||||
<function name='virStoragePoolRef' file='libvirt' module='libvirt'>
|
||||
<info>Increment the reference count on the pool. For each additional call to this method, there shall be a corresponding call to virStoragePoolFree 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.</info>
|
||||
<return type='int' info=''/>
|
||||
<arg name='pool' type='virStoragePoolPtr' info=''/>
|
||||
</function>
|
||||
<function name='virStoragePoolRefresh' file='libvirt' module='libvirt'>
|
||||
<info>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</info>
|
||||
<return type='int' info='0 if the volume list was refreshed, -1 on failure'/>
|
||||
@ -1663,7 +1767,7 @@ see note above'/>
|
||||
<arg name='flags' type='unsigned int' info='future flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virStorageVolFree' file='libvirt' module='libvirt'>
|
||||
<info>Release the storage volume handle. The underlying storage volume contains to exist</info>
|
||||
<info>Release the storage volume handle. The underlying storage volume continues to exist.</info>
|
||||
<return type='int' info='0 on success, or -1 on error'/>
|
||||
<arg name='vol' type='virStorageVolPtr' info='pointer to storage volume'/>
|
||||
</function>
|
||||
@ -1717,5 +1821,10 @@ see note above'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to hypervisor connection'/>
|
||||
<arg name='path' type='const char *' info='locally unique path'/>
|
||||
</function>
|
||||
<function name='virStorageVolRef' file='libvirt' module='libvirt'>
|
||||
<info>Increment the reference count on the vol. For each additional call to this method, there shall be a corresponding call to virStorageVolFree 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 vol would increment the reference count.</info>
|
||||
<return type='int' info=''/>
|
||||
<arg name='vol' type='virStorageVolPtr' info=''/>
|
||||
</function>
|
||||
</symbols>
|
||||
</api>
|
||||
|
File diff suppressed because it is too large
Load Diff
1064
docs/libvirt.rng
1064
docs/libvirt.rng
File diff suppressed because it is too large
Load Diff
194
docs/logging.html
Normal file
194
docs/logging.html
Normal file
@ -0,0 +1,194 @@
|
||||
<?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 logging.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: Logging in the library and the daemon</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="active" href="deployment.html">Deployment</a>
|
||||
<ul class="l2"><li>
|
||||
<div>
|
||||
<a title="The URI formats used for connecting to libvirt" class="inactive" href="uri.html">URI format</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Enable remote access over TCP" class="inactive" href="remote.html">Remote access</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Configure authentication for the libvirt daemon" class="inactive" href="auth.html">Authentication</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="Access the libvirt daemon from a native Windows client" class="inactive" href="windows.html">Windows port</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<span class="active">Logging</span>
|
||||
</div>
|
||||
</li></ul>
|
||||
</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="inactive" href="format.html">XML format</a>
|
||||
</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></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>Logging in the library and the daemon</h1>
|
||||
<p>Libvirt includes logging facilities starting from version 0.6.0,
|
||||
this complements the <a href="errors.html">error handling</a>
|
||||
mechanism and APIs to allow tracing though the execution of the
|
||||
library as well as in the libvirtd daemon.</p>
|
||||
<p>The logging functionalities in libvirt are based on 3 key concepts,
|
||||
similar to the one present in other generic logging facilities like
|
||||
log4j:</p>
|
||||
<ul><li>log messages: they are information generated at runtime by
|
||||
the libvirt code, it includes a priority level (DEBUG = 1,
|
||||
INFO = 2, WARNING = 3, ERROR = 4), a category, function name and
|
||||
line number, indicating where it originated from, and finally
|
||||
a formatted message, in addition the library adds a timestamp
|
||||
at the begining of the message</li><li>log filters: it's a set of patter and priorities allowing to acept
|
||||
or reject a log message, if the message category matches a filter,
|
||||
the message priority is compared to the filter priority, if lower
|
||||
the message is discarded, if higher the message is output. If
|
||||
no filter matches, then a general priority level is applied to
|
||||
all remaining messages. This allows to capture for example all
|
||||
debug messages for the QEmu driver, but otherwise only allow
|
||||
errors to show up from other parts</li><li>log outputs: once a message has gone though filtering a set of
|
||||
output defines where to send the message, they can also filter
|
||||
based on the priority, for example it may be useful to output
|
||||
all messages to a debugging file but only allow errors to be
|
||||
logged though syslog.</li></ul>
|
||||
<p>The library configuration of logging is though 3 environment variables
|
||||
allowing to control the logging behaviour:</p>
|
||||
<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>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>0: no logging at all</li><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>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
|
||||
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>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
|
||||
filepath</li></ul>
|
||||
<p>In all cases the x prefix is the minimal level, acting as a filter:</p>
|
||||
<ul><li>0: everything</li><li>1: DEBUG</li><li>2: INFO</li><li>3: WARNING</li><li>4: ERROR</li></ul>
|
||||
<p>Multiple output can be defined , they just need to be separated by
|
||||
spaces, e.g.: <code>"3:syslog:libvirtd 0:file:/tmp/libvirt.log"</code>
|
||||
will log all warnings and errors to syslog under the libvirtd ident
|
||||
but also log everything debugging and informations included in the
|
||||
file <code>/tmp/libvirt.log</code></p>
|
||||
<p>For example setting up the following:</p>
|
||||
<pre>export LIBVIRT_DEBUG=1
|
||||
export LIBVIRT_LOG_OUTPUTS="0:file:virsh.log"</pre>
|
||||
<p>and then running virsh will accumulate the logs in the
|
||||
<code>virsh.log</code> file in a way similar to:</p>
|
||||
<pre>14:29:04.771: debug : virInitialize:278 : register drivers
|
||||
14:29:04.771: debug : virRegisterDriver:618 : registering Test as driver 0</pre>
|
||||
<p>the messages are timestamped, there is also the level recorded,
|
||||
if debug the name of the function is also printed and then the formatted
|
||||
message. This should be sufficient to at least get a precise idea of
|
||||
what is happening and where things are going wrong, allowing to then
|
||||
put the correct breakpoints when running under a debugger.</p>
|
||||
</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>
|
111
docs/logging.html.in
Normal file
111
docs/logging.html.in
Normal file
@ -0,0 +1,111 @@
|
||||
<?xml version="1.0"?>
|
||||
<html>
|
||||
<body>
|
||||
<h1 >Logging in the library and the daemon</h1>
|
||||
<p>Libvirt includes logging facilities starting from version 0.6.0,
|
||||
this complements the <a href="errors.html">error handling</a>
|
||||
mechanism and APIs to allow tracing though the execution of the
|
||||
library as well as in the libvirtd daemon.</p>
|
||||
<p>The logging functionalities in libvirt are based on 3 key concepts,
|
||||
similar to the one present in other generic logging facilities like
|
||||
log4j:</p>
|
||||
<ul>
|
||||
<li>log messages: they are information generated at runtime by
|
||||
the libvirt code, it includes a priority level (DEBUG = 1,
|
||||
INFO = 2, WARNING = 3, ERROR = 4), a category, function name and
|
||||
line number, indicating where it originated from, and finally
|
||||
a formatted message, in addition the library adds a timestamp
|
||||
at the begining of the message</li>
|
||||
<li>log filters: it's a set of patter and priorities allowing to acept
|
||||
or reject a log message, if the message category matches a filter,
|
||||
the message priority is compared to the filter priority, if lower
|
||||
the message is discarded, if higher the message is output. If
|
||||
no filter matches, then a general priority level is applied to
|
||||
all remaining messages. This allows to capture for example all
|
||||
debug messages for the QEmu driver, but otherwise only allow
|
||||
errors to show up from other parts</li>
|
||||
<li>log outputs: once a message has gone though filtering a set of
|
||||
output defines where to send the message, they can also filter
|
||||
based on the priority, for example it may be useful to output
|
||||
all messages to a debugging file but only allow errors to be
|
||||
logged though syslog.</li>
|
||||
</ul>
|
||||
<p>The library configuration of logging is though 3 environment variables
|
||||
allowing to control the logging behaviour:</p>
|
||||
<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>Similary the daemon logging behaviour can be tuned using 3 config
|
||||
variables, stored in the configuration file:
|
||||
<ul>
|
||||
<li>log_level: accepts the following values:
|
||||
<ul>
|
||||
<li>0: no logging at all</li>
|
||||
<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>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
|
||||
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>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
|
||||
filepath</li>
|
||||
</ul>
|
||||
<p>In all cases the x prefix is the minimal level, acting as a filter:</p>
|
||||
<ul>
|
||||
<li>0: everything</li>
|
||||
<li>1: DEBUG</li>
|
||||
<li>2: INFO</li>
|
||||
<li>3: WARNING</li>
|
||||
<li>4: ERROR</li>
|
||||
</ul>
|
||||
<p>Multiple output can be defined , they just need to be separated by
|
||||
spaces, e.g.: <code>"3:syslog:libvirtd 0:file:/tmp/libvirt.log"</code>
|
||||
will log all warnings and errors to syslog under the libvirtd ident
|
||||
but also log everything debugging and informations included in the
|
||||
file <code>/tmp/libvirt.log</code></p>
|
||||
<p>For example setting up the following:</p>
|
||||
<pre>export LIBVIRT_DEBUG=1
|
||||
export LIBVIRT_LOG_OUTPUTS="0:file:virsh.log"</pre>
|
||||
<p>and then running virsh will accumulate the logs in the
|
||||
<code>virsh.log</code> file in a way similar to:</p>
|
||||
<pre>14:29:04.771: debug : virInitialize:278 : register drivers
|
||||
14:29:04.771: debug : virRegisterDriver:618 : registering Test as driver 0</pre>
|
||||
<p>the messages are timestamped, there is also the level recorded,
|
||||
if debug the name of the function is also printed and then the formatted
|
||||
message. This should be sufficient to at least get a precise idea of
|
||||
what is happening and where things are going wrong, allowing to then
|
||||
put the correct breakpoints when running under a debugger.</p>
|
||||
</body>
|
||||
</html>
|
170
docs/news.html
170
docs/news.html
@ -76,6 +76,176 @@
|
||||
<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.6.2: Apr 3 2009</h3>
|
||||
<ul><li>New features: support SASL auth for VNC server (Daniel Berrange),
|
||||
memory ballooning in QEMU (Daniel Berrange), SCSI HBA storage pool
|
||||
support (Dave Allan), PCI passthrough in Xen driver (Daniel
|
||||
Berrange)</li><li>Portability: be more flexible in QEmu binaries paths (Daniel
|
||||
Berrange), Mingw portability fixes (Daniel Berrange),</li><li>Documentation: add security attributes in RNG schemas, cleanup
|
||||
of architecture docs, missing disk bus values in RNG schemas,</li><li>Bug fixes: tap vs vbd type on block detach (Cole Robinson and
|
||||
Takahashi Tomohiro), bad free on storage volume error (Daniel
|
||||
Berrange), maplenght computations in remote driver (Daniel Berrange),
|
||||
event dispatching in the daemon (Daniel Berrange), virDomainSetVcpus
|
||||
deadlock (Daniel Berrange), save deadlock in test driver (Cole
|
||||
Robinson), fix timing of security driver init (Cole Robinson),
|
||||
forbid readonly connections from dumping the XML safe info (Cole
|
||||
Robinson), file descriptor leak on remote access,
|
||||
fix labelling of shared/readonly devices (Dan Walsh),
|
||||
virsh missing auth on shell commands (Matthias Bolte),
|
||||
avoid zombie on exec pipe errors (Ryota Ozaki),
|
||||
memory leak in virNodeDeviceGetParent (Daniel Berrange),
|
||||
URI check in migration (Daniel Berrange), various memory bug fixes
|
||||
(Daniel Berrange), python bindings generator fix (Daniel Berrange),
|
||||
NUMA memory fixes (Daniel Berrange), various svirt fixes (Daniel
|
||||
Berrange), fix sparse volume allocation reporting (Cole Robinson),
|
||||
test driver domain restore return value (Cole Robinson),
|
||||
do not lose file format info on volume refresh (Cole Robinson)</li><li>Improvements: get CPU usage info for LXC (Ryota Ozaki), fix domain
|
||||
RNG to add ac97 and tests (Pritesh Kothari), OpenVZ support for
|
||||
non-template filesystem root (Florian Vichot), improve arch
|
||||
capabilities generation (Daniel Berrange), modularization of spec
|
||||
file (Ryota Ozaki), better error reports in SEXPR generation (Daniel
|
||||
Berrange), support for vifname parameter in VIF config (Daniel
|
||||
Berrange), localtime handling for new xen (Daniel Berrange),
|
||||
error reporting/ verification of security labels (Dan Walsh),
|
||||
add --console arg for create and start virsh commands (Daniel
|
||||
Berrange), refresh volume alloc/capacity when dumping XML (Cole
|
||||
Robinson)</li><li>Cleanups: FILE * leaks removal, unused parameters flagging
|
||||
(Maximilian Wilhelm), switch to pre-C99 struct initialization
|
||||
for drivers (Chris Lalancette), symlinks resolving cleanup (Daniel
|
||||
Berrange)</li></ul>
|
||||
<h3>0.6.1: Mar 3 2009</h3>
|
||||
<ul><li>New features: new APIs for Node device detach reattach and reset
|
||||
(Mark McLoughlin), sVirt mandatory access control support (James
|
||||
Morris and Dan Walsh)</li><li>Portability: non gcc toolchain (John Levon), gcc-4.4 warnings fixes
|
||||
(Mark McLoughlin), fix build without LXC and QEmu (Jim Meyering)</li><li>Documentation: man page bugzilla URL (Mark McLoughlin), typo
|
||||
in domain format (Jesse Farinacci), clock offset fix (Mark
|
||||
McLoughlin), hostdev description typo (Mark McLoughlin), static
|
||||
host IP (Charles Duffy), new example program (David Allan)</li><li>Bug fixes: NULL dereference in LXC (Jim Meyering), fix domain
|
||||
error reporting (John Levon), fix loop of libvirtd --timeout
|
||||
(Daniel Berrange), limit history to 500 to restrict virsh memory
|
||||
(Daniel Berrange), wrong lvm volume format check (Cole Robinson),
|
||||
I/O error in daemon and associated remote acces crash (Daniel
|
||||
Berrange), fix autostart of session daemon (Daniel Berrange),
|
||||
restart guest on qemu migration failures (Chris Lalancette),
|
||||
config parsing leaks (Ryota Ozaki), DBus multithreading activation
|
||||
to avoid crashes (Daniel Berrange), mark defined network descriptions
|
||||
as persistent (Cole Robinson), qemu+tls handshake negotiation hang
|
||||
(Chris Lalancette)</li><li>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<>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<>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
|
||||
McLoughlin), function to parse node device XML descriptions and
|
||||
associated test (Mark McLoughlin), generate network bridge names if
|
||||
not provided (Cole Robinson), recognize ejectable media in hostdev
|
||||
hal driver (Cole Robinson), integration of sVirt (Daniel Berrange)</li><li>Cleanups: printf NULL string checks (John Levon), remove uses of
|
||||
strerror and use virStrerror (Jim Meyering), remove redundant NULL
|
||||
assignments (Jim Meyering), QEmu driver logging and exec cleanups
|
||||
(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<>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),
|
||||
various tests cleanups and improvements (Jim Meyering), fix the
|
||||
internal export list with new APIs (Daniel Berrange), cleanups on
|
||||
new APIs for Node device (Daniel Berrange)</li></ul>
|
||||
<h3>0.6.0: Jan 31 2009</h3>
|
||||
<ul><li>New features: thread safety of the API and event handling (Daniel
|
||||
Berrange), allow QEmu domains to survive daemon restart (Guido
|
||||
G<>nther), extended logging capabilities, support copy-on-write
|
||||
storage volumes (Daniel Berrange), support of storage cache
|
||||
control options for QEmu/KVM (Daniel Berrange)</li><li>Portability: fix old DBus API problem, Debian portability fix
|
||||
(Daniel Berrange), fix distcheck (Jim Meyering), build in
|
||||
debug mode (Jim Meyering), libnuma API portability (Jim Meyering),
|
||||
many portability fixes pointed by Solaris (John Levon), non-gcc
|
||||
portability fixes (John Levon), various include fixes (Jim Meyering),
|
||||
various Windows and Mingw portability fixes (Daniel Berrange),
|
||||
solaris Xen fixes (John Levon), RPC portability to Solaris (Daniel
|
||||
Berrange)</li><li>Documentation: typo fixes (Richard Jones), logging support,
|
||||
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), </li><li>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<>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
|
||||
daemon bug fixes (John Levon), OpenVZ MAC addresses generation
|
||||
(Evgeniy Sokolov), poll call initialization fix (Daniel Berrange),
|
||||
various Xen driver fixes (John Levon), segfault on device
|
||||
back compat (Cole Robinson), couple Xen bug fixes coming from
|
||||
RHEL (Markus Armbruster), buffer overflow in libvirt proxy
|
||||
(rasputin@email.ru), vnc port report (John Levon), repair save
|
||||
and restore on recent KVM versions (Daniel Berrange), Xen
|
||||
cpu pinning XML fix (John Levon), various xen driver fixes
|
||||
(Daniel Berrange), some memory leak fixes (Daniel Berrange)</li><li>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<>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<>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<>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
|
||||
QEmu/KVM tun/tap performances (Mark McLoughlin), enable floppies
|
||||
for Xen fully virt (John Levon), support VNC password settings
|
||||
for QEmu/KVM (Daniel Berrange), qemu driver version reporting
|
||||
(Daniel Berrange) </li><li>Cleanups: converting linked lists to arrays (Daniel Berrange),
|
||||
daemon RPC handling refactoring (Daniel Berrange), strings cleanups
|
||||
(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<>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<>nther), add
|
||||
virGetHostname (David Lutterkort), add flags argument to the full
|
||||
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
|
||||
usage (Daniel Berrange), many small cleanups (Jim Meyering and
|
||||
Daniel Berrange), examples Makefile generator (John Levon),
|
||||
mis-use of PF_UNIX as a protocol (John Levon), cleanup OOM
|
||||
error paths (Jim Meyering), temporary fix fro valgrind on lxc
|
||||
(Daniel Berrange), QEmu driver init cleanups (Daniel Berrange)</li></ul>
|
||||
<h3>0.5.1: Dec 4 2008</h3>
|
||||
<ul><li>Portability: fix missing dep in spec file, fix compilation with new
|
||||
NUMA libraries (Daniel Berrange), udev compatibility for RHEL (Chris
|
||||
Lalancette), </li><li>Documentation: documentation copy and paste errors and typo (Cole
|
||||
Robinson)</li><li>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<>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)</li><li>Improvements: use xend preferably to hypervisor call to set Xen
|
||||
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<>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)</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>
|
||||
<h3>0.4.6: Sep 23 2008</h3>
|
||||
|
@ -5,6 +5,203 @@
|
||||
<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.6.2: Apr 3 2009</h3>
|
||||
<ul>
|
||||
<li>New features: support SASL auth for VNC server (Daniel Berrange),
|
||||
memory ballooning in QEMU (Daniel Berrange), SCSI HBA storage pool
|
||||
support (Dave Allan), PCI passthrough in Xen driver (Daniel
|
||||
Berrange)</li>
|
||||
<li>Portability: be more flexible in QEmu binaries paths (Daniel
|
||||
Berrange), Mingw portability fixes (Daniel Berrange),</li>
|
||||
<li>Documentation: add security attributes in RNG schemas, cleanup
|
||||
of architecture docs, missing disk bus values in RNG schemas,</li>
|
||||
<li>Bug fixes: tap vs vbd type on block detach (Cole Robinson and
|
||||
Takahashi Tomohiro), bad free on storage volume error (Daniel
|
||||
Berrange), maplenght computations in remote driver (Daniel Berrange),
|
||||
event dispatching in the daemon (Daniel Berrange), virDomainSetVcpus
|
||||
deadlock (Daniel Berrange), save deadlock in test driver (Cole
|
||||
Robinson), fix timing of security driver init (Cole Robinson),
|
||||
forbid readonly connections from dumping the XML safe info (Cole
|
||||
Robinson), file descriptor leak on remote access,
|
||||
fix labelling of shared/readonly devices (Dan Walsh),
|
||||
virsh missing auth on shell commands (Matthias Bolte),
|
||||
avoid zombie on exec pipe errors (Ryota Ozaki),
|
||||
memory leak in virNodeDeviceGetParent (Daniel Berrange),
|
||||
URI check in migration (Daniel Berrange), various memory bug fixes
|
||||
(Daniel Berrange), python bindings generator fix (Daniel Berrange),
|
||||
NUMA memory fixes (Daniel Berrange), various svirt fixes (Daniel
|
||||
Berrange), fix sparse volume allocation reporting (Cole Robinson),
|
||||
test driver domain restore return value (Cole Robinson),
|
||||
do not lose file format info on volume refresh (Cole Robinson)</li>
|
||||
<li>Improvements: get CPU usage info for LXC (Ryota Ozaki), fix domain
|
||||
RNG to add ac97 and tests (Pritesh Kothari), OpenVZ support for
|
||||
non-template filesystem root (Florian Vichot), improve arch
|
||||
capabilities generation (Daniel Berrange), modularization of spec
|
||||
file (Ryota Ozaki), better error reports in SEXPR generation (Daniel
|
||||
Berrange), support for vifname parameter in VIF config (Daniel
|
||||
Berrange), localtime handling for new xen (Daniel Berrange),
|
||||
error reporting/ verification of security labels (Dan Walsh),
|
||||
add --console arg for create and start virsh commands (Daniel
|
||||
Berrange), refresh volume alloc/capacity when dumping XML (Cole
|
||||
Robinson)</li>
|
||||
<li>Cleanups: FILE * leaks removal, unused parameters flagging
|
||||
(Maximilian Wilhelm), switch to pre-C99 struct initialization
|
||||
for drivers (Chris Lalancette), symlinks resolving cleanup (Daniel
|
||||
Berrange)</li>
|
||||
</ul>
|
||||
<h3>0.6.1: Mar 3 2009</h3>
|
||||
<ul>
|
||||
<li>New features: new APIs for Node device detach reattach and reset
|
||||
(Mark McLoughlin), sVirt mandatory access control support (James
|
||||
Morris and Dan Walsh)</li>
|
||||
<li>Portability: non gcc toolchain (John Levon), gcc-4.4 warnings fixes
|
||||
(Mark McLoughlin), fix build without LXC and QEmu (Jim Meyering)</li>
|
||||
<li>Documentation: man page bugzilla URL (Mark McLoughlin), typo
|
||||
in domain format (Jesse Farinacci), clock offset fix (Mark
|
||||
McLoughlin), hostdev description typo (Mark McLoughlin), static
|
||||
host IP (Charles Duffy), new example program (David Allan)</li>
|
||||
<li>Bug fixes: NULL dereference in LXC (Jim Meyering), fix domain
|
||||
error reporting (John Levon), fix loop of libvirtd --timeout
|
||||
(Daniel Berrange), limit history to 500 to restrict virsh memory
|
||||
(Daniel Berrange), wrong lvm volume format check (Cole Robinson),
|
||||
I/O error in daemon and associated remote acces crash (Daniel
|
||||
Berrange), fix autostart of session daemon (Daniel Berrange),
|
||||
restart guest on qemu migration failures (Chris Lalancette),
|
||||
config parsing leaks (Ryota Ozaki), DBus multithreading activation
|
||||
to avoid crashes (Daniel Berrange), mark defined network descriptions
|
||||
as persistent (Cole Robinson), qemu+tls handshake negotiation hang
|
||||
(Chris Lalancette)</li>
|
||||
<li>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ü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ü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
|
||||
McLoughlin), function to parse node device XML descriptions and
|
||||
associated test (Mark McLoughlin), generate network bridge names if
|
||||
not provided (Cole Robinson), recognize ejectable media in hostdev
|
||||
hal driver (Cole Robinson), integration of sVirt (Daniel Berrange)</li>
|
||||
<li>Cleanups: printf NULL string checks (John Levon), remove uses of
|
||||
strerror and use virStrerror (Jim Meyering), remove redundant NULL
|
||||
assignments (Jim Meyering), QEmu driver logging and exec cleanups
|
||||
(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ü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),
|
||||
various tests cleanups and improvements (Jim Meyering), fix the
|
||||
internal export list with new APIs (Daniel Berrange), cleanups on
|
||||
new APIs for Node device (Daniel Berrange)</li>
|
||||
</ul>
|
||||
<h3>0.6.0: Jan 31 2009</h3>
|
||||
<ul>
|
||||
<li>New features: thread safety of the API and event handling (Daniel
|
||||
Berrange), allow QEmu domains to survive daemon restart (Guido
|
||||
Günther), extended logging capabilities, support copy-on-write
|
||||
storage volumes (Daniel Berrange), support of storage cache
|
||||
control options for QEmu/KVM (Daniel Berrange)</li>
|
||||
<li>Portability: fix old DBus API problem, Debian portability fix
|
||||
(Daniel Berrange), fix distcheck (Jim Meyering), build in
|
||||
debug mode (Jim Meyering), libnuma API portability (Jim Meyering),
|
||||
many portability fixes pointed by Solaris (John Levon), non-gcc
|
||||
portability fixes (John Levon), various include fixes (Jim Meyering),
|
||||
various Windows and Mingw portability fixes (Daniel Berrange),
|
||||
solaris Xen fixes (John Levon), RPC portability to Solaris (Daniel
|
||||
Berrange)</li>
|
||||
<li>Documentation: typo fixes (Richard Jones), logging support,
|
||||
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), </li>
|
||||
<li>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ü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
|
||||
daemon bug fixes (John Levon), OpenVZ MAC addresses generation
|
||||
(Evgeniy Sokolov), poll call initialization fix (Daniel Berrange),
|
||||
various Xen driver fixes (John Levon), segfault on device
|
||||
back compat (Cole Robinson), couple Xen bug fixes coming from
|
||||
RHEL (Markus Armbruster), buffer overflow in libvirt proxy
|
||||
(rasputin@email.ru), vnc port report (John Levon), repair save
|
||||
and restore on recent KVM versions (Daniel Berrange), Xen
|
||||
cpu pinning XML fix (John Levon), various xen driver fixes
|
||||
(Daniel Berrange), some memory leak fixes (Daniel Berrange)</li>
|
||||
<li>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ü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ü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ü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
|
||||
QEmu/KVM tun/tap performances (Mark McLoughlin), enable floppies
|
||||
for Xen fully virt (John Levon), support VNC password settings
|
||||
for QEmu/KVM (Daniel Berrange), qemu driver version reporting
|
||||
(Daniel Berrange) </li>
|
||||
<li>Cleanups: converting linked lists to arrays (Daniel Berrange),
|
||||
daemon RPC handling refactoring (Daniel Berrange), strings cleanups
|
||||
(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ü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ünther), add
|
||||
virGetHostname (David Lutterkort), add flags argument to the full
|
||||
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
|
||||
usage (Daniel Berrange), many small cleanups (Jim Meyering and
|
||||
Daniel Berrange), examples Makefile generator (John Levon),
|
||||
mis-use of PF_UNIX as a protocol (John Levon), cleanup OOM
|
||||
error paths (Jim Meyering), temporary fix fro valgrind on lxc
|
||||
(Daniel Berrange), QEmu driver init cleanups (Daniel Berrange)</li>
|
||||
</ul>
|
||||
<h3>0.5.1: Dec 4 2008</h3>
|
||||
<ul>
|
||||
<li>Portability: fix missing dep in spec file, fix compilation with new
|
||||
NUMA libraries (Daniel Berrange), udev compatibility for RHEL (Chris
|
||||
Lalancette), </li>
|
||||
<li>Documentation: documentation copy and paste errors and typo (Cole
|
||||
Robinson)</li>
|
||||
<li>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ü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)</li>
|
||||
<li>Improvements: use xend preferably to hypervisor call to set Xen
|
||||
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ü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)</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>
|
||||
|
@ -84,7 +84,7 @@
|
||||
<ul><li>
|
||||
The <a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen</a> hypervisor
|
||||
</li><li>
|
||||
The <a href="http://fabrice.bellard.free.fr/qemu/">QEMU</a> emulator
|
||||
The <a href="http://bellard.org/qemu/">QEMU</a> emulator
|
||||
</li><li>
|
||||
The <a href="http://kvm.qumranet.com/kvmwiki">KVM</a> Linux hypervisor
|
||||
</li><li>
|
||||
|
@ -25,7 +25,7 @@
|
||||
The <a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen</a> hypervisor
|
||||
</li>
|
||||
<li>
|
||||
The <a href="http://fabrice.bellard.free.fr/qemu/">QEMU</a> emulator
|
||||
The <a href="http://bellard.org/qemu/">QEMU</a> emulator
|
||||
</li>
|
||||
<li>
|
||||
The <a href="http://kvm.qumranet.com/kvmwiki">KVM</a> Linux hypervisor
|
||||
|
@ -58,6 +58,10 @@
|
||||
<div>
|
||||
<a title="Access the libvirt daemon from a native Windows client" class="inactive" href="windows.html">Windows port</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The library and the daemon logging support" class="inactive" href="logging.html">Logging</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
@ -659,22 +663,6 @@ Blank lines and comments beginning with <code>#</code> are ignored.
|
||||
after commas between the fields (and this is what we check against),
|
||||
but the <code>openssl x509</code> tool shows spaces.
|
||||
</p>
|
||||
</td></tr><tr><td> tls_allowed_ip_list ["ip1", "ip2", "ip3"] </td><td> (none - clients can connect from anywhere) </td><td>
|
||||
<p>
|
||||
Enable an access control list of the IP addresses of clients
|
||||
who can connect to the TLS or TCP ports on this server.
|
||||
</p>
|
||||
<p>
|
||||
The default is that clients can connect from any IP address.
|
||||
</p>
|
||||
<p>
|
||||
This list may contain wildcards such as <code>192.168.*</code>
|
||||
See the POSIX <code>fnmatch</code> function for the format
|
||||
of the wildcards.
|
||||
</p>
|
||||
<p>
|
||||
Note that if this is an empty list, <i>no client can connect</i>.
|
||||
</p>
|
||||
</td></tr></table>
|
||||
<h3>
|
||||
<a name="Remote_IPv6" id="Remote_IPv6">IPv6 support</a>
|
||||
|
@ -793,27 +793,6 @@ Blank lines and comments beginning with <code>#</code> are ignored.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> tls_allowed_ip_list ["ip1", "ip2", "ip3"] </td>
|
||||
<td> (none - clients can connect from anywhere) </td>
|
||||
<td>
|
||||
<p>
|
||||
Enable an access control list of the IP addresses of clients
|
||||
who can connect to the TLS or TCP ports on this server.
|
||||
</p>
|
||||
<p>
|
||||
The default is that clients can connect from any IP address.
|
||||
</p>
|
||||
<p>
|
||||
This list may contain wildcards such as <code>192.168.*</code>
|
||||
See the POSIX <code>fnmatch</code> function for the format
|
||||
of the wildcards.
|
||||
</p>
|
||||
<p>
|
||||
Note that if this is an empty list, <i>no client can connect</i>.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3>
|
||||
<a name="Remote_IPv6" id="Remote_IPv6">IPv6 support</a>
|
||||
|
2
docs/schemas/.cvsignore
Normal file
2
docs/schemas/.cvsignore
Normal file
@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
2
docs/schemas/.gitignore
vendored
Normal file
2
docs/schemas/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
12
docs/schemas/Makefile.am
Normal file
12
docs/schemas/Makefile.am
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
|
||||
schemadir = $(pkgdatadir)/schemas
|
||||
schema_DATA = \
|
||||
domain.rng \
|
||||
network.rng \
|
||||
storagepool.rng \
|
||||
storagevol.rng \
|
||||
nodedev.rng \
|
||||
capability.rng
|
||||
|
||||
EXTRA_DIST = $(schema_DATA)
|
302
docs/schemas/capability.rng
Normal file
302
docs/schemas/capability.rng
Normal file
@ -0,0 +1,302 @@
|
||||
<!-- 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='capabilities'/>
|
||||
</start>
|
||||
|
||||
|
||||
<define name='capabilities'>
|
||||
<element name='capabilities'>
|
||||
<ref name='hostcaps'/>
|
||||
|
||||
<zeroOrMore>
|
||||
<ref name='guestcaps'/>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='hostcaps'>
|
||||
<element name='host'>
|
||||
<element name='cpu'>
|
||||
<element name='arch'>
|
||||
<ref name='archnames'/>
|
||||
</element>
|
||||
<optional>
|
||||
<ref name='cpufeatures'/>
|
||||
</optional>
|
||||
</element>
|
||||
<optional>
|
||||
<ref name='migration'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='topology'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='secmodel'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='secmodel'>
|
||||
<element name='secmodel'>
|
||||
<element name='model'>
|
||||
<text/>
|
||||
</element>
|
||||
<element name='doi'>
|
||||
<text/>
|
||||
</element>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
|
||||
<define name='cpufeatures'>
|
||||
<element name='features'>
|
||||
<optional>
|
||||
<element name='pae'><empty/></element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='nonpae'><empty/></element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='vmx'><empty/></element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='svm'><empty/></element>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='migration'>
|
||||
<element name='migration_features'>
|
||||
<optional>
|
||||
<element name='live'>
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='uri_transports'>
|
||||
<oneOrMore>
|
||||
<element name='uri_transport'>
|
||||
<choice>
|
||||
<value>xenmigr</value>
|
||||
</choice>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='topology'>
|
||||
<element name='topology'>
|
||||
<element name='cells'>
|
||||
<attribute name='num'>
|
||||
<ref name='uint'/>
|
||||
</attribute>
|
||||
<oneOrMore>
|
||||
<ref name='cell'/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='cell'>
|
||||
<element name='cell'>
|
||||
<attribute name='id'>
|
||||
<ref name='uint'/>
|
||||
</attribute>
|
||||
|
||||
<optional>
|
||||
<element name='cpus'>
|
||||
<attribute name='num'>
|
||||
<ref name='uint'/>
|
||||
</attribute>
|
||||
<oneOrMore>
|
||||
<ref name='cpu'/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='cpu'>
|
||||
<element name='cpu'>
|
||||
<attribute name='id'>
|
||||
<ref name='uint'/>
|
||||
</attribute>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='guestcaps'>
|
||||
<element name='guest'>
|
||||
<ref name='ostype'/>
|
||||
<ref name='arch'/>
|
||||
<optional>
|
||||
<ref name='features'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='ostype'>
|
||||
<element name='os_type'>
|
||||
<choice>
|
||||
<value>xen</value> <!-- Xen 3.0 pv -->
|
||||
<value>linux</value> <!-- same as 'xen' - legacy -->
|
||||
<value>hvm</value> <!-- unmodified OS -->
|
||||
<value>exe</value> <!-- For container based virt -->
|
||||
<value>uml</value> <!-- user mode linux -->
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='arch'>
|
||||
<element name='arch'>
|
||||
<attribute name='name'>
|
||||
<ref name='archnames'/>
|
||||
</attribute>
|
||||
<ref name='wordsize'/>
|
||||
<optional>
|
||||
<ref name='emulator'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='loader'/>
|
||||
</optional>
|
||||
<zeroOrMore>
|
||||
<ref name='machine'/>
|
||||
</zeroOrMore>
|
||||
<oneOrMore>
|
||||
<ref name='domain'/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='emulator'>
|
||||
<element name='emulator'>
|
||||
<ref name='path'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='loader'>
|
||||
<element name='loader'>
|
||||
<ref name='path'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='wordsize'>
|
||||
<element name='wordsize'>
|
||||
<choice>
|
||||
<value>31</value>
|
||||
<value>32</value>
|
||||
<value>64</value>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='machine'>
|
||||
<element name='machine'>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='domain'>
|
||||
<element name='domain'>
|
||||
<attribute name='type'>
|
||||
<choice>
|
||||
<value>qemu</value>
|
||||
<value>kqemu</value>
|
||||
<value>kvm</value>
|
||||
<value>xen</value>
|
||||
<value>uml</value>
|
||||
<value>lxc</value>
|
||||
<value>openvz</value>
|
||||
<value>test</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
|
||||
<optional>
|
||||
<ref name='emulator'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='machine'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='features'>
|
||||
<element name='features'>
|
||||
<optional>
|
||||
<element name='pae'>
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='nonpae'>
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='ia64_be'>
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='acpi'>
|
||||
<ref name='featuretoggle'/>
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='apic'>
|
||||
<ref name='featuretoggle'/>
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='featuretoggle'>
|
||||
<attribute name='toggle'>
|
||||
<choice>
|
||||
<value>yes</value>
|
||||
<value>no</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<attribute name='default'>
|
||||
<choice>
|
||||
<value>on</value>
|
||||
<value>off</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</define>
|
||||
|
||||
<define name='archnames'>
|
||||
<choice>
|
||||
<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>sparc</value>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
|
||||
<define name='uint'>
|
||||
<data type='string'>
|
||||
<param name="pattern">[0-9]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='path'>
|
||||
<data type='string'>
|
||||
<param name="pattern">/[a-zA-Z0-9_\+\-/%]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
</grammar>
|
||||
|
1113
docs/schemas/domain.rng
Normal file
1113
docs/schemas/domain.rng
Normal file
File diff suppressed because it is too large
Load Diff
@ -27,6 +27,21 @@
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<!-- The device through which the bridge is connected to the
|
||||
rest of the network -->
|
||||
<element name="forward">
|
||||
<optional><attribute name="dev"><text/></attribute></optional>
|
||||
<optional>
|
||||
<attribute name="mode">
|
||||
<choice>
|
||||
<value>nat</value>
|
||||
<value>routed</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<!-- The IP element sets up NAT'ing and an optional DHCP server
|
||||
local to the host. -->
|
||||
@ -51,19 +66,4 @@
|
||||
</element>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<!-- The device through which the bridge is connected to the
|
||||
rest of the network -->
|
||||
<element name="forward">
|
||||
<optional><attribute name="dev"><text/></attribute></optional>
|
||||
<optional>
|
||||
<attribute name="mode">
|
||||
<choice>
|
||||
<value>nat</value>
|
||||
<value>routed</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
360
docs/schemas/nodedev.rng
Normal file
360
docs/schemas/nodedev.rng
Normal file
@ -0,0 +1,360 @@
|
||||
<!-- 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
|
||||
and in virsh -->
|
||||
<element name="name"><text/></element>
|
||||
<optional>
|
||||
<element name="parent"><text/></element>
|
||||
</optional>
|
||||
|
||||
<zeroOrMore>
|
||||
<ref name="capability"/>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='capability'>
|
||||
<element name="capability">
|
||||
<choice>
|
||||
<ref name="capsystem"/>
|
||||
<ref name="cappcidev"/>
|
||||
<ref name="capusbdev"/>
|
||||
<ref name="capusbinterface"/>
|
||||
<ref name="capnet"/>
|
||||
<ref name="capscsihost"/>
|
||||
<ref name="capscsi"/>
|
||||
<ref name="capstorage"/>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='capsystem'>
|
||||
<attribute name='type'>
|
||||
<value>system</value>
|
||||
</attribute>
|
||||
|
||||
<optional>
|
||||
<element name='product'><text/></element>
|
||||
</optional>
|
||||
|
||||
<element name='hardware'>
|
||||
<optional>
|
||||
<element name='vendor'><text/></element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='version'><text/></element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='serial'><text/></element>
|
||||
</optional>
|
||||
|
||||
<element name='uuid'>
|
||||
<ref name='uuid'/>
|
||||
</element>
|
||||
</element>
|
||||
|
||||
|
||||
<element name='firmware'>
|
||||
<optional>
|
||||
<element name='vendor'><text/></element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='version'><text/></element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='release_date'><text/></element>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='cappcidev'>
|
||||
<attribute name='type'>
|
||||
<value>pci</value>
|
||||
</attribute>
|
||||
|
||||
<element name='domain'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='bus'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='slot'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='function'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
|
||||
<element name='product'>
|
||||
<attribute name='id'>
|
||||
<ref name='hexuint'/>
|
||||
</attribute>
|
||||
|
||||
<choice>
|
||||
<text/>
|
||||
<empty/>
|
||||
</choice>
|
||||
</element>
|
||||
|
||||
<element name='vendor'>
|
||||
<attribute name='id'>
|
||||
<ref name='hexuint'/>
|
||||
</attribute>
|
||||
|
||||
<choice>
|
||||
<text/>
|
||||
<empty/>
|
||||
</choice>
|
||||
</element>
|
||||
|
||||
</define>
|
||||
|
||||
<define name='capusbdev'>
|
||||
<attribute name='type'>
|
||||
<value>usb_device</value>
|
||||
</attribute>
|
||||
|
||||
<element name='bus'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='device'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
|
||||
<element name='product'>
|
||||
<attribute name='id'>
|
||||
<ref name='hexuint'/>
|
||||
</attribute>
|
||||
|
||||
<choice>
|
||||
<text/>
|
||||
<empty/>
|
||||
</choice>
|
||||
</element>
|
||||
|
||||
<element name='vendor'>
|
||||
<attribute name='id'>
|
||||
<ref name='hexuint'/>
|
||||
</attribute>
|
||||
|
||||
<choice>
|
||||
<text/>
|
||||
<empty/>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='capusbinterface'>
|
||||
<attribute name='type'>
|
||||
<value>usb</value>
|
||||
</attribute>
|
||||
|
||||
<element name='number'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='class'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='subclass'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='protocol'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
|
||||
<optional>
|
||||
<element name='description'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='capnet'>
|
||||
<attribute name='type'>
|
||||
<value>net</value>
|
||||
</attribute>
|
||||
|
||||
<element name='interface'>
|
||||
<text/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name='address'>
|
||||
<ref name='mac'/>
|
||||
</element>
|
||||
</optional>
|
||||
|
||||
<zeroOrMore>
|
||||
<ref name='subcapnet'/>
|
||||
</zeroOrMore>
|
||||
</define>
|
||||
|
||||
<define name='subcapnet'>
|
||||
<element name='capability'>
|
||||
<choice>
|
||||
<ref name='subcapnet80203'/>
|
||||
<ref name='subcapnet80211'/>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='subcapnet80203'>
|
||||
<attribute name='type'>
|
||||
<value>80203</value>
|
||||
</attribute>
|
||||
</define>
|
||||
|
||||
<define name='subcapnet80211'>
|
||||
<attribute name='type'>
|
||||
<value>80211</value>
|
||||
</attribute>
|
||||
</define>
|
||||
|
||||
|
||||
<define name='capscsihost'>
|
||||
<attribute name='type'>
|
||||
<value>scsi_host</value>
|
||||
</attribute>
|
||||
|
||||
<element name='host'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='capscsi'>
|
||||
<attribute name='type'>
|
||||
<value>scsi</value>
|
||||
</attribute>
|
||||
|
||||
<element name='host'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='bus'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='target'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='lun'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
|
||||
<element name='type'>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='capstorage'>
|
||||
<attribute name='type'>
|
||||
<value>storage</value>
|
||||
</attribute>
|
||||
|
||||
<element name='block'>
|
||||
<ref name='path'/>
|
||||
</element>
|
||||
|
||||
<optional>
|
||||
<element name='bus'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='drive_type'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='model'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='vendor'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
|
||||
<choice>
|
||||
<ref name='capstorageremoveable'/>
|
||||
<ref name='capstoragefixed'/>
|
||||
</choice>
|
||||
|
||||
<optional>
|
||||
<element name='capability'>
|
||||
<attribute name='type'>
|
||||
<value>hotpluggable</value>
|
||||
</attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='capstorageremoveable'>
|
||||
<element name='capability'>
|
||||
<attribute name='type'>
|
||||
<value>removable</value>
|
||||
</attribute>
|
||||
<element name='media_available'>
|
||||
<choice>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
</choice>
|
||||
</element>
|
||||
|
||||
<element name='media_size'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='capstoragefixed'>
|
||||
<element name='size'>
|
||||
<ref name='uint'/>
|
||||
</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='uint'>
|
||||
<data type='string'>
|
||||
<param name="pattern">[0-9]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='hexuint'>
|
||||
<data type='string'>
|
||||
<param name="pattern">(0x)?[0-9a-f]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='mac'>
|
||||
<data type='string'>
|
||||
<param name="pattern">([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='path'>
|
||||
<data type='string'>
|
||||
<param name="pattern">/[a-zA-Z0-9_\+\-/%]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
</grammar>
|
371
docs/schemas/storagepool.rng
Normal file
371
docs/schemas/storagepool.rng
Normal file
@ -0,0 +1,371 @@
|
||||
<!-- 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='pool'/>
|
||||
</start>
|
||||
|
||||
|
||||
<define name='pool'>
|
||||
<element name='pool'>
|
||||
<choice>
|
||||
<ref name='pooldir'/>
|
||||
<ref name='poolfs'/>
|
||||
<ref name='poolnetfs'/>
|
||||
<ref name='poollogical'/>
|
||||
<ref name='pooldisk'/>
|
||||
<ref name='pooliscsi'/>
|
||||
<ref name='poolscsi'/>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='pooldir'>
|
||||
<attribute name='type'>
|
||||
<value>dir</value>
|
||||
</attribute>
|
||||
<ref name='commonmetadata'/>
|
||||
<ref name='sizing'/>
|
||||
<ref name='sourcedir'/>
|
||||
<ref name='target'/>
|
||||
</define>
|
||||
|
||||
<define name='poolfs'>
|
||||
<attribute name='type'>
|
||||
<value>fs</value>
|
||||
</attribute>
|
||||
<ref name='commonmetadata'/>
|
||||
<ref name='sizing'/>
|
||||
<ref name='sourcefs'/>
|
||||
<ref name='target'/>
|
||||
</define>
|
||||
|
||||
<define name='poolnetfs'>
|
||||
<attribute name='type'>
|
||||
<value>netfs</value>
|
||||
</attribute>
|
||||
<ref name='commonmetadata'/>
|
||||
<ref name='sizing'/>
|
||||
<ref name='sourcenetfs'/>
|
||||
<ref name='target'/>
|
||||
</define>
|
||||
|
||||
<define name='poollogical'>
|
||||
<attribute name='type'>
|
||||
<value>logical</value>
|
||||
</attribute>
|
||||
<ref name='commonmetadata'/>
|
||||
<ref name='sizing'/>
|
||||
<ref name='sourcelogical'/>
|
||||
<ref name='target'/>
|
||||
</define>
|
||||
|
||||
<define name='pooldisk'>
|
||||
<attribute name='type'>
|
||||
<value>disk</value>
|
||||
</attribute>
|
||||
<ref name='commonmetadata'/>
|
||||
<ref name='sizing'/>
|
||||
<ref name='sourcedisk'/>
|
||||
<ref name='target'/>
|
||||
</define>
|
||||
|
||||
<define name='pooliscsi'>
|
||||
<attribute name='type'>
|
||||
<value>iscsi</value>
|
||||
</attribute>
|
||||
<ref name='commonmetadata'/>
|
||||
<ref name='sizing'/>
|
||||
<ref name='sourceiscsi'/>
|
||||
<ref name='target'/>
|
||||
</define>
|
||||
|
||||
<define name='poolscsi'>
|
||||
<attribute name='type'>
|
||||
<value>scsi</value>
|
||||
</attribute>
|
||||
<ref name='commonmetadata'/>
|
||||
<ref name='sizing'/>
|
||||
<ref name='sourcescsi'/>
|
||||
<ref name='target'/>
|
||||
</define>
|
||||
|
||||
<define name='commonmetadata'>
|
||||
<element name='name'>
|
||||
<ref name='name'/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name='uuid'>
|
||||
<ref name='uuid'/>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='sizing'>
|
||||
<optional>
|
||||
<element name='capacity'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='allocation'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='available'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='permissions'>
|
||||
<optional>
|
||||
<element name='permissions'>
|
||||
<element name='mode'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='owner'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='group'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name='label'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='target'>
|
||||
<element name='target'>
|
||||
<optional>
|
||||
<element name='path'>
|
||||
<ref name='path'/>
|
||||
</element>
|
||||
</optional>
|
||||
<ref name='permissions'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourceinfohost'>
|
||||
<element name='host'>
|
||||
<attribute name='name'>
|
||||
<text/>
|
||||
</attribute>
|
||||
<empty/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourceinfodev'>
|
||||
<element name='device'>
|
||||
<attribute name='path'>
|
||||
<choice>
|
||||
<ref name='path'/>
|
||||
<ref name='name'/>
|
||||
</choice>
|
||||
</attribute>
|
||||
<choice>
|
||||
<empty/>
|
||||
<ref name='devextents'/>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='devextents'>
|
||||
<oneOrMore>
|
||||
<element name='freeExtent'>
|
||||
<attribute name='start'>
|
||||
<ref name='uint'/>
|
||||
</attribute>
|
||||
<attribute name='end'>
|
||||
<ref name='uint'/>
|
||||
</attribute>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
</define>
|
||||
|
||||
<define name='sourceinfodir'>
|
||||
<element name='dir'>
|
||||
<attribute name='path'>
|
||||
<ref name='path'/>
|
||||
</attribute>
|
||||
<empty/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourceinfoadapter'>
|
||||
<element name='adapter'>
|
||||
<attribute name='name'>
|
||||
<text/>
|
||||
</attribute>
|
||||
<empty/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourceinfoname'>
|
||||
<element name='name'>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourcefmtfs'>
|
||||
<optional>
|
||||
<element name='format'>
|
||||
<attribute name='type'>
|
||||
<choice>
|
||||
<value>auto</value>
|
||||
<value>ext2</value>
|
||||
<value>ext3</value>
|
||||
<value>ext4</value>
|
||||
<value>ufs</value>
|
||||
<value>iso9660</value>
|
||||
<value>udf</value>
|
||||
<value>gfs</value>
|
||||
<value>gfs2</value>
|
||||
<value>vfat</value>
|
||||
<value>hfs+</value>
|
||||
<value>xfs</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
|
||||
<define name='sourcefmtnetfs'>
|
||||
<optional>
|
||||
<element name='format'>
|
||||
<attribute name='type'>
|
||||
<choice>
|
||||
<value>auto</value>
|
||||
<value>nfs</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
|
||||
<define name='sourcefmtdisk'>
|
||||
<optional>
|
||||
<element name='format'>
|
||||
<attribute name='type'>
|
||||
<choice>
|
||||
<value>none</value>
|
||||
<value>dos</value>
|
||||
<value>dvh</value>
|
||||
<value>gpt</value>
|
||||
<value>mac</value>
|
||||
<value>bsd</value>
|
||||
<value>pc98</value>
|
||||
<value>sun</value>
|
||||
<value>lvm2</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
|
||||
<define name='sourcefmtlogical'>
|
||||
<optional>
|
||||
<element name='format'>
|
||||
<attribute name='type'>
|
||||
<choice>
|
||||
<value>auto</value>
|
||||
<value>lvm2</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
|
||||
<define name='sourcedir'>
|
||||
<optional>
|
||||
<element name='source'>
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
<define name='sourcefs'>
|
||||
<element name='source'>
|
||||
<ref name='sourceinfodev'/>
|
||||
<ref name='sourcefmtfs'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourcenetfs'>
|
||||
<element name='source'>
|
||||
<ref name='sourceinfohost'/>
|
||||
<ref name='sourceinfodir'/>
|
||||
<ref name='sourcefmtnetfs'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourcelogical'>
|
||||
<element name='source'>
|
||||
<ref name='sourceinfoname'/>
|
||||
<optional>
|
||||
<ref name='sourceinfodev'/>
|
||||
</optional>
|
||||
<ref name='sourcefmtlogical'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourcedisk'>
|
||||
<element name='source'>
|
||||
<ref name='sourceinfodev'/>
|
||||
<ref name='sourcefmtdisk'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourceiscsi'>
|
||||
<element name='source'>
|
||||
<ref name='sourceinfohost'/>
|
||||
<ref name='sourceinfodev'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourcescsi'>
|
||||
<element name='source'>
|
||||
<ref name='sourceinfoname'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
|
||||
<define name='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='uint'>
|
||||
<data type='string'>
|
||||
<param name="pattern">[0-9]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='path'>
|
||||
<data type='string'>
|
||||
<param name="pattern">/[a-zA-Z0-9_\+\-/%]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
|
||||
</grammar>
|
187
docs/schemas/storagevol.rng
Normal file
187
docs/schemas/storagevol.rng
Normal file
@ -0,0 +1,187 @@
|
||||
<!-- 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='vol'/>
|
||||
</start>
|
||||
|
||||
|
||||
<define name='vol'>
|
||||
<element name='volume'>
|
||||
<element name='name'>
|
||||
<ref name='name'/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name='key'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
<ref name='source'/>
|
||||
<ref name='sizing'/>
|
||||
<ref name='target'/>
|
||||
<optional>
|
||||
<ref name='backingStore'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sizing'>
|
||||
<optional>
|
||||
<element name='capacity'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='allocation'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='permissions'>
|
||||
<optional>
|
||||
<element name='permissions'>
|
||||
<element name='mode'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='owner'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<element name='group'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name='label'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='target'>
|
||||
<element name='target'>
|
||||
<optional>
|
||||
<element name='path'>
|
||||
<ref name='path'/>
|
||||
</element>
|
||||
</optional>
|
||||
<ref name='format'/>
|
||||
<ref name='permissions'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='backingStore'>
|
||||
<element name='backingStore'>
|
||||
<element name='path'>
|
||||
<ref name='path'/>
|
||||
</element>
|
||||
<ref name='format'/>
|
||||
<ref name='permissions'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
|
||||
<define name='source'>
|
||||
<element name='source'>
|
||||
<zeroOrMore>
|
||||
<ref name='sourcedev'/>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sourcedev'>
|
||||
<element name='device'>
|
||||
<attribute name='path'>
|
||||
<ref name='path'/>
|
||||
</attribute>
|
||||
<choice>
|
||||
<empty/>
|
||||
<ref name='devextents'/>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='devextents'>
|
||||
<oneOrMore>
|
||||
<element name='extent'>
|
||||
<attribute name='start'>
|
||||
<ref name='uint'/>
|
||||
</attribute>
|
||||
<attribute name='end'>
|
||||
<ref name='uint'/>
|
||||
</attribute>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
</define>
|
||||
|
||||
<define name='formatdev'>
|
||||
<choice>
|
||||
<value>none</value>
|
||||
<value>auto</value>
|
||||
<value>ext2</value>
|
||||
<value>ext3</value>
|
||||
<value>ext4</value>
|
||||
<value>ufs</value>
|
||||
<value>iso9660</value>
|
||||
<value>udf</value>
|
||||
<value>gfs</value>
|
||||
<value>gfs2</value>
|
||||
<value>vfat</value>
|
||||
<value>hfs+</value>
|
||||
<value>xfs</value>
|
||||
</choice>
|
||||
|
||||
</define>
|
||||
|
||||
|
||||
<define name='formatfile'>
|
||||
<choice>
|
||||
<value>raw</value>
|
||||
<value>dir</value>
|
||||
<value>bochs</value>
|
||||
<value>cloop</value>
|
||||
<value>cow</value>
|
||||
<value>dmg</value>
|
||||
<value>iso</value>
|
||||
<value>qcow</value>
|
||||
<value>qcow2</value>
|
||||
<value>vmdk</value>
|
||||
<value>vpc</value>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name='format'>
|
||||
<optional>
|
||||
<element name='format'>
|
||||
<attribute name='type'>
|
||||
<choice>
|
||||
<ref name='formatfile'/>
|
||||
<ref name='formatdev'/>
|
||||
</choice>
|
||||
</attribute>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='name'>
|
||||
<data type='string'>
|
||||
<param name="pattern">[a-zA-Z0-9_\+\-\.]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='uint'>
|
||||
<data type='string'>
|
||||
<param name="pattern">[0-9]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='path'>
|
||||
<data type='string'>
|
||||
<param name="pattern">/[a-zA-Z0-9_\+\-\./%]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
|
||||
</grammar>
|
@ -99,10 +99,16 @@
|
||||
</li><li>
|
||||
<a href="windows.html">Windows port</a>
|
||||
<span>Access the libvirt daemon from a native Windows client</span>
|
||||
</li><li>
|
||||
<a href="logging.html">Logging</a>
|
||||
<span>The library and the daemon logging support</span>
|
||||
</li></ul></li><li>
|
||||
<a href="intro.html">Architecture</a>
|
||||
<span>Overview of the logical subsystems in the libvirt API</span>
|
||||
<ul><li>
|
||||
<a href="goals.html">Goals</a>
|
||||
<span>Terminology and goals of libvirt API</span>
|
||||
</li><li>
|
||||
<a href="archdomain.html">Domains</a>
|
||||
<span>Managing virtual machines</span>
|
||||
</li><li>
|
||||
|
@ -46,12 +46,20 @@
|
||||
<a href="windows.html">Windows port</a>
|
||||
<span>Access the libvirt daemon from a native Windows client</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="logging.html">Logging</a>
|
||||
<span>The library and the daemon logging support</span>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="intro.html">Architecture</a>
|
||||
<span>Overview of the logical subsystems in the libvirt API</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="goals.html">Goals</a>
|
||||
<span>Terminology and goals of libvirt API</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="archdomain.html">Domains</a>
|
||||
<span>Managing virtual machines</span>
|
||||
|
@ -401,11 +401,11 @@ libvirt.
|
||||
</pre>
|
||||
<h3>Valid pool format types</h3>
|
||||
<p>
|
||||
The logical volume pool does not use the pool format type element.
|
||||
The iSCSI volume pool does not use the pool format type element.
|
||||
</p>
|
||||
<h3>Valid volume format types</h3>
|
||||
<p>
|
||||
The logical volume pool does not use the volume format type element.
|
||||
The iSCSI volume pool does not use the volume format type element.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -343,12 +343,12 @@ libvirt.
|
||||
|
||||
<h3>Valid pool format types</h3>
|
||||
<p>
|
||||
The logical volume pool does not use the pool format type element.
|
||||
The iSCSI volume pool does not use the pool format type element.
|
||||
</p>
|
||||
|
||||
<h3>Valid volume format types</h3>
|
||||
<p>
|
||||
The logical volume pool does not use the volume format type element.
|
||||
The iSCSI volume pool does not use the volume format type element.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -58,6 +58,10 @@
|
||||
<div>
|
||||
<a title="Access the libvirt daemon from a native Windows client" class="inactive" href="windows.html">Windows port</a>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The library and the daemon logging support" class="inactive" href="logging.html">Logging</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
@ -221,13 +225,21 @@ here</a>.
|
||||
</h3>
|
||||
<p>
|
||||
Remote URIs are formed by taking ordinary local URIs and adding a
|
||||
hostname and/or transport name. For example:
|
||||
hostname and/or transport name. As a special case, using a URI
|
||||
scheme of 'remote', will tell the remote libvirtd server to probe
|
||||
for the optimal hypervisor driver. This is equivalent to passing
|
||||
a NULL URI for a local connection. For example:
|
||||
</p>
|
||||
<table class="top_table"><tr><th> Local URI </th><th> Remote URI </th><th> Meaning </th></tr><tr><td>
|
||||
<code>xen:///</code>
|
||||
</td><td>
|
||||
<code>xen://oirase/</code>
|
||||
</td><td> Connect to the Xen hypervisor running on host <code>oirase</code>
|
||||
using TLS. </td></tr><tr><td>
|
||||
<code>NULL</code>
|
||||
</td><td>
|
||||
<code>remote://oirase/</code>
|
||||
</td><td> Connect to the "default" hypervisor running on host <code>oirase</code>
|
||||
using TLS. </td></tr><tr><td>
|
||||
<code>xen:///</code>
|
||||
</td><td>
|
||||
|
@ -124,7 +124,10 @@ here</a>.
|
||||
</h3>
|
||||
<p>
|
||||
Remote URIs are formed by taking ordinary local URIs and adding a
|
||||
hostname and/or transport name. For example:
|
||||
hostname and/or transport name. As a special case, using a URI
|
||||
scheme of 'remote', will tell the remote libvirtd server to probe
|
||||
for the optimal hypervisor driver. This is equivalent to passing
|
||||
a NULL URI for a local connection. For example:
|
||||
</p>
|
||||
<table class="top_table">
|
||||
<tr>
|
||||
@ -140,6 +143,16 @@ hostname and/or transport name. For example:
|
||||
<code>xen://oirase/</code>
|
||||
</td>
|
||||
<td> Connect to the Xen hypervisor running on host <code>oirase</code>
|
||||
using TLS. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>NULL</code>
|
||||
</td>
|
||||
<td>
|
||||
<code>remote://oirase/</code>
|
||||
</td>
|
||||
<td> Connect to the "default" hypervisor running on host <code>oirase</code>
|
||||
using TLS. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -101,7 +101,7 @@ allow to connect locally as root to the daemon supervising QEmu and KVM domains
|
||||
|
||||
=item qemu:///session
|
||||
|
||||
allow to connect locally as a normal user to the his own set of QEmu and KVM domains
|
||||
allow to connect locally as a normal user to his own set of QEmu and KVM domains
|
||||
|
||||
=back
|
||||
|
||||
@ -540,9 +540,9 @@ L<virt-install(1)>, L<xm(1)>, L<virt-top(1)>, L<virt-mem(1)>, L<virt-df(1)>, L<h
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Bugs can be view on the RedHat bugzilla page under the libvirt
|
||||
Bugs can be filed in Red Hat bugzilla under the Virtualization Tools/libvirt
|
||||
L<https://bugzilla.redhat.com/>
|
||||
|
||||
L<https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr>
|
||||
L<https://bugzilla.redhat.com/buglist.cgi?product=Virtualization+Tools&component=libvirt&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED>
|
||||
|
||||
=end
|
||||
|
@ -58,6 +58,10 @@
|
||||
<div>
|
||||
<span class="active">Windows port</span>
|
||||
</div>
|
||||
</li><li>
|
||||
<div>
|
||||
<a title="The library and the daemon logging support" class="inactive" href="logging.html">Logging</a>
|
||||
</div>
|
||||
</li></ul>
|
||||
</div>
|
||||
</li><li>
|
||||
|
@ -11,9 +11,9 @@
|
||||
#include <libvirt/libvirt.h>
|
||||
|
||||
#define DEBUG0(fmt) printf("%s:%d :: " fmt "\n", \
|
||||
__FUNCTION__, __LINE__)
|
||||
__func__, __LINE__)
|
||||
#define DEBUG(fmt, ...) printf("%s:%d: " fmt "\n", \
|
||||
__FUNCTION__, __LINE__, __VA_ARGS__)
|
||||
__func__, __LINE__, __VA_ARGS__)
|
||||
#define STREQ(a,b) (strcmp((a),(b)) == 0)
|
||||
|
||||
#ifndef ATTRIBUTE_UNUSED
|
||||
@ -158,7 +158,7 @@ int myDomainEventCallback1 (virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
int detail,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
printf("%s EVENT: Domain %s(%d) %s %s\n", __FUNCTION__, virDomainGetName(dom),
|
||||
printf("%s EVENT: Domain %s(%d) %s %s\n", __func__, virDomainGetName(dom),
|
||||
virDomainGetID(dom), eventToString(event),
|
||||
eventDetailToString(event, detail));
|
||||
return 0;
|
||||
@ -170,7 +170,7 @@ int myDomainEventCallback2 (virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
int detail,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
printf("%s EVENT: Domain %s(%d) %s %s\n", __FUNCTION__, virDomainGetName(dom),
|
||||
printf("%s EVENT: Domain %s(%d) %s %s\n", __func__, virDomainGetName(dom),
|
||||
virDomainGetID(dom), eventToString(event),
|
||||
eventDetailToString(event, detail));
|
||||
return 0;
|
||||
@ -179,7 +179,7 @@ int myDomainEventCallback2 (virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
static void myFreeFunc(void *opaque)
|
||||
{
|
||||
char *str = opaque;
|
||||
printf("%s: Freeing [%s]\n", __FUNCTION__, str);
|
||||
printf("%s: Freeing [%s]\n", __func__, str);
|
||||
free(str);
|
||||
}
|
||||
|
||||
|
5
examples/hellolibvirt/.cvsignore
Normal file
5
examples/hellolibvirt/.cvsignore
Normal file
@ -0,0 +1,5 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
hellolibvirt
|
||||
.deps
|
||||
.libs
|
5
examples/hellolibvirt/.gitignore
vendored
Normal file
5
examples/hellolibvirt/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
hellolibvirt
|
||||
.deps
|
||||
.libs
|
5
examples/hellolibvirt/Makefile.am
Normal file
5
examples/hellolibvirt/Makefile.am
Normal file
@ -0,0 +1,5 @@
|
||||
INCLUDES = -I@top_srcdir@/include
|
||||
noinst_PROGRAMS = hellolibvirt
|
||||
hellolibvirt_CFLAGS = $(WARN_CFLAGS)
|
||||
hellolibvirt_SOURCES = hellolibvirt.c
|
||||
hellolibvirt_LDADD = @top_builddir@/src/libvirt.la
|
205
examples/hellolibvirt/hellolibvirt.c
Normal file
205
examples/hellolibvirt/hellolibvirt.c
Normal file
@ -0,0 +1,205 @@
|
||||
/* This file contains trivial example code to connect to the running
|
||||
* hypervisor and gather a few bits of information. */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <libvirt/libvirt.h>
|
||||
#include <libvirt/virterror.h>
|
||||
|
||||
static void
|
||||
showError(virConnectPtr conn)
|
||||
{
|
||||
int ret;
|
||||
virErrorPtr err;
|
||||
|
||||
err = malloc(sizeof(*err));
|
||||
if (NULL == err) {
|
||||
printf("Could not allocate memory for error data\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = virConnCopyLastError(conn, err);
|
||||
|
||||
switch (ret) {
|
||||
case 0:
|
||||
printf("No error found\n");
|
||||
break;
|
||||
|
||||
case -1:
|
||||
printf("Parameter error when attempting to get last error\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("libvirt reported: \"%s\"\n", err->message);
|
||||
break;
|
||||
}
|
||||
|
||||
virResetError(err);
|
||||
free(err);
|
||||
|
||||
out:
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
showHypervisorInfo(virConnectPtr conn)
|
||||
{
|
||||
int ret = 0;
|
||||
unsigned long hvVer, major, minor, release;
|
||||
const char *hvType;
|
||||
|
||||
/* virConnectGetType returns a pointer to a static string, so no
|
||||
* allocation or freeing is necessary; it is possible for the call
|
||||
* to fail if, for example, there is no connection to a
|
||||
* hypervisor, so check what it returns. */
|
||||
hvType = virConnectGetType(conn);
|
||||
if (NULL == hvType) {
|
||||
ret = 1;
|
||||
printf("Failed to get hypervisor type\n");
|
||||
showError(conn);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (0 != virConnectGetVersion(conn, &hvVer)) {
|
||||
ret = 1;
|
||||
printf("Failed to get hypervisor version\n");
|
||||
showError(conn);
|
||||
goto out;
|
||||
}
|
||||
|
||||
major = hvVer / 1000000;
|
||||
hvVer %= 1000000;
|
||||
minor = hvVer / 1000;
|
||||
release = hvVer % 1000;
|
||||
|
||||
printf("Hypervisor: \"%s\" version: %lu.%lu.%lu\n",
|
||||
hvType,
|
||||
major,
|
||||
minor,
|
||||
release);
|
||||
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
showDomains(virConnectPtr conn)
|
||||
{
|
||||
int ret = 0, i, numNames, numInactiveDomains, numActiveDomains;
|
||||
char **nameList = NULL;
|
||||
|
||||
numActiveDomains = virConnectNumOfDomains(conn);
|
||||
if (-1 == numActiveDomains) {
|
||||
ret = 1;
|
||||
printf("Failed to get number of active domains\n");
|
||||
showError(conn);
|
||||
goto out;
|
||||
}
|
||||
|
||||
numInactiveDomains = virConnectNumOfDefinedDomains(conn);
|
||||
if (-1 == numInactiveDomains) {
|
||||
ret = 1;
|
||||
printf("Failed to get number of inactive domains\n");
|
||||
showError(conn);
|
||||
goto out;
|
||||
}
|
||||
|
||||
printf("There are %d active and %d inactive domains\n",
|
||||
numActiveDomains, numInactiveDomains);
|
||||
|
||||
nameList = malloc(sizeof(*nameList) * numInactiveDomains);
|
||||
|
||||
if (NULL == nameList) {
|
||||
ret = 1;
|
||||
printf("Could not allocate memory for list of inactive domains\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
numNames = virConnectListDefinedDomains(conn,
|
||||
nameList,
|
||||
numInactiveDomains);
|
||||
|
||||
if (-1 == numNames) {
|
||||
ret = 1;
|
||||
printf("Could not get list of defined domains from hypervisor\n");
|
||||
showError(conn);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (numNames > 0) {
|
||||
printf("Inactive domains:\n");
|
||||
}
|
||||
|
||||
for (i = 0 ; i < numNames ; i++) {
|
||||
printf(" %s\n", *(nameList + i));
|
||||
/* The API documentation doesn't say so, but the names
|
||||
* returned by virConnectListDefinedDomains are strdup'd and
|
||||
* must be freed here. */
|
||||
free(*(nameList + i));
|
||||
}
|
||||
|
||||
out:
|
||||
free(nameList);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int ret = 0;
|
||||
virConnectPtr conn;
|
||||
char *uri;
|
||||
|
||||
printf("Attempting to connect to hypervisor\n");
|
||||
|
||||
uri = (argc > 0 ? argv[1] : NULL);
|
||||
|
||||
/* virConnectOpenAuth is called here with all default parameters,
|
||||
* except, possibly, the URI of the hypervisor. */
|
||||
conn = virConnectOpenAuth(uri, virConnectAuthPtrDefault, 0);
|
||||
|
||||
if (NULL == conn) {
|
||||
ret = 1;
|
||||
printf("No connection to hypervisor\n");
|
||||
showError(conn);
|
||||
goto out;
|
||||
}
|
||||
|
||||
uri = virConnectGetURI(conn);
|
||||
if (NULL == uri) {
|
||||
ret = 1;
|
||||
printf("Failed to get URI for hypervisor connection\n");
|
||||
showError(conn);
|
||||
goto disconnect;
|
||||
}
|
||||
|
||||
printf("Connected to hypervisor at \"%s\"\n", uri);
|
||||
free(uri);
|
||||
|
||||
if (0 != showHypervisorInfo(conn)) {
|
||||
ret = 1;
|
||||
goto disconnect;
|
||||
}
|
||||
|
||||
if (0 != showDomains(conn)) {
|
||||
ret = 1;
|
||||
goto disconnect;
|
||||
}
|
||||
|
||||
disconnect:
|
||||
if (0 != virConnectClose(conn)) {
|
||||
printf("Failed to disconnect from hypervisor\n");
|
||||
showError(conn);
|
||||
ret = 1;
|
||||
} else {
|
||||
printf("Disconnected from hypervisor\n");
|
||||
}
|
||||
|
||||
out:
|
||||
return ret;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user