Browse Source

New upstream version 1.2.5

tags/upstream/1.2.5^0
Guido Günther 7 years ago
parent
commit
899c1d32fd
100 changed files with 102352 additions and 92913 deletions
  1. +2
    -0
      AUTHORS
  2. +1711
    -0
      ChangeLog
  3. +7
    -7
      cfg.mk
  4. +7
    -0
      config.h.in
  5. +97
    -10
      configure
  6. +8
    -1
      configure.ac
  7. +1
    -1
      daemon/libvirtd.8.in
  8. +37
    -0
      daemon/remote.c
  9. +222
    -0
      daemon/remote_dispatch.h
  10. +1
    -1
      docs/acl.html
  11. +8
    -0
      docs/aclperms.htmlinc
  12. +1
    -1
      docs/apibuild.py
  13. +4
    -0
      docs/apps.html
  14. +6
    -0
      docs/apps.html.in
  15. +95
    -20
      docs/devhelp/libvirt-libvirt.html
  16. +8
    -0
      docs/devhelp/libvirt.devhelp
  17. +24
    -0
      docs/drvbhyve.html
  18. +24
    -0
      docs/drvbhyve.html.in
  19. +2
    -2
      docs/drvesx.html
  20. +2
    -2
      docs/drvesx.html.in
  21. +19
    -2
      docs/formatdomain.html
  22. +20
    -2
      docs/formatdomain.html.in
  23. +39
    -20
      docs/html/libvirt-libvirt.html
  24. +1
    -1
      docs/hvsupport.html
  25. +285
    -205
      docs/hvsupport.html.in
  26. +110
    -20
      docs/libvirt-api.xml
  27. +146
    -18
      docs/libvirt-refs.xml
  28. +155
    -0
      docs/news.html
  29. +169
    -0
      docs/news.html.in
  30. +1
    -1
      docs/schemas/domaincommon.rng
  31. +27
    -1
      include/libvirt/libvirt.h
  32. +26
    -0
      include/libvirt/libvirt.h.in
  33. +5
    -8
      libvirt.spec
  34. +4
    -7
      libvirt.spec.in
  35. +15
    -1
      m4/virt-selinux.m4
  36. +1
    -0
      po/POTFILES.in
  37. BIN
      po/af.gmo
  38. +3090
    -2891
      po/af.po
  39. BIN
      po/am.gmo
  40. +3090
    -2891
      po/am.po
  41. BIN
      po/ar.gmo
  42. +3090
    -2891
      po/ar.po
  43. BIN
      po/as.gmo
  44. +3141
    -2908
      po/as.po
  45. BIN
      po/be.gmo
  46. +3090
    -2891
      po/be.po
  47. BIN
      po/bg.gmo
  48. +3091
    -2891
      po/bg.po
  49. BIN
      po/bn.gmo
  50. +3090
    -2891
      po/bn.po
  51. BIN
      po/bn_IN.gmo
  52. +3085
    -2891
      po/bn_IN.po
  53. BIN
      po/bo.gmo
  54. +3060
    -2883
      po/bo.po
  55. BIN
      po/bs.gmo
  56. +3090
    -2891
      po/bs.po
  57. BIN
      po/ca.gmo
  58. +3073
    -2887
      po/ca.po
  59. BIN
      po/cs.gmo
  60. +3085
    -2890
      po/cs.po
  61. BIN
      po/cy.gmo
  62. +3090
    -2891
      po/cy.po
  63. BIN
      po/da.gmo
  64. +3090
    -2891
      po/da.po
  65. BIN
      po/de.gmo
  66. +3144
    -2911
      po/de.po
  67. BIN
      po/el.gmo
  68. +3087
    -2891
      po/el.po
  69. BIN
      po/en_GB.gmo
  70. +3141
    -2908
      po/en_GB.po
  71. BIN
      po/es.gmo
  72. +3133
    -2901
      po/es.po
  73. BIN
      po/et.gmo
  74. +3090
    -2891
      po/et.po
  75. BIN
      po/eu_ES.gmo
  76. +3090
    -2891
      po/eu_ES.po
  77. BIN
      po/fa.gmo
  78. +3090
    -2891
      po/fa.po
  79. BIN
      po/fi.gmo
  80. +3091
    -2891
      po/fi.po
  81. BIN
      po/fr.gmo
  82. +3086
    -2890
      po/fr.po
  83. BIN
      po/gl.gmo
  84. +3090
    -2891
      po/gl.po
  85. BIN
      po/gu.gmo
  86. +3137
    -2907
      po/gu.po
  87. BIN
      po/he.gmo
  88. +3090
    -2891
      po/he.po
  89. BIN
      po/hi.gmo
  90. +3090
    -2896
      po/hi.po
  91. BIN
      po/hr.gmo
  92. +3091
    -2891
      po/hr.po
  93. BIN
      po/hu.gmo
  94. +3090
    -2891
      po/hu.po
  95. BIN
      po/hy.gmo
  96. +3090
    -2891
      po/hy.po
  97. BIN
      po/id.gmo
  98. +3087
    -2890
      po/id.po
  99. BIN
      po/is.gmo
  100. +3090
    -2891
      po/is.po

+ 2
- 0
AUTHORS View File

@@ -215,6 +215,7 @@ Ian Campbell <ian.campbell@citrix.com>
Ian Main <imain@redhat.com>
Ilja Livenson <ilja.livenson@gmail.com>
J.B. Joret <jb@linux.vnet.ibm.com>
James Shubin <james@shubin.ca>
Jamie Strandboge <jamie@canonical.com>
Jan Kiszka <jan.kiszka@siemens.com>
Jason Andryuk <andryuk@aero.org>
@@ -238,6 +239,7 @@ Jonas Eriksson <jonas.j.eriksson@ericsson.com>
Jonathan Lebon <jlebon@redhat.com>
Josh Durgin <josh.durgin@inktank.com>
Juerg Haefliger <juerg.haefliger@hp.com>
Julio Faracco <jcfaracco@gmail.com>
Jun Koi <junkoi2004@gmail.com>
Justin Clift <jclift@redhat.com>
Ján Tomko <jtomko@redhat.com>


+ 1711
- 0
ChangeLog
File diff suppressed because it is too large
View File


+ 7
- 7
cfg.mk View File

@@ -625,7 +625,7 @@ sc_libvirt_unmarked_diagnostics:
$(_sc_search_regexp)
@{ grep -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT)); \
grep -A1 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
| sed 's/_("\([^\"]\|\\.\)\+"//;s/[ ]"%s"//' \
| $(SED) 's/_("\([^\"]\|\\.\)\+"//;s/[ ]"%s"//' \
| grep '[ ]"' && \
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
exit 1; } || :
@@ -650,7 +650,7 @@ sc_prohibit_newline_at_end_of_diagnostic:
sc_prohibit_diagnostic_without_format:
@{ grep -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT)); \
grep -A2 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
| sed -rn -e ':l; /[,"]$$/ {N;b l;}' \
| $(SED) -rn -e ':l; /[,"]$$/ {N;b l;}' \
-e '/(xenapiSessionErrorHandler|vah_(error|warning))/d' \
-e '/\<$(func_re) *\([^"]*"([^%"]|"\n[^"]*")*"[,)]/p' \
| grep -vE 'VIR_ERROR' && \
@@ -672,7 +672,7 @@ sc_prohibit_useless_translation:
# or \n on one side of the split.
sc_require_whitespace_in_translation:
@grep -n -A1 '"$$' $$($(VC_LIST_EXCEPT)) \
| sed -ne ':l; /"$$/ {N;b l;}; s/"\n[^"]*"/""/g; s/\\n/ /g' \
| $(SED) -ne ':l; /"$$/ {N;b l;}; s/"\n[^"]*"/""/g; s/\\n/ /g' \
-e '/_(.*[^\ ]""[^\ ]/p' | grep . && \
{ echo '$(ME): missing whitespace at line split' 1>&2; \
exit 1; } || :
@@ -692,11 +692,11 @@ sc_preprocessor_indentation:
sc_spec_indentation:
@if cppi --version >/dev/null 2>&1; then \
for f in $$($(VC_LIST_EXCEPT) | grep '\.spec\.in$$'); do \
sed -e 's|#|// #|; s|%ifn*\(arch\)* |#if a // |' \
$(SED) -e 's|#|// #|; s|%ifn*\(arch\)* |#if a // |' \
-e 's/%\(else\|endif\|define\)/#\1/' \
-e 's/^\( *\)\1\1\1#/#\1/' \
-e 's|^\( *[^#/ ]\)|// \1|; s|^\( */[^/]\)|// \1|' $$f \
| cppi -a -c 2>&1 | sed "s|standard input|$$f|"; \
| cppi -a -c 2>&1 | $(SED) "s|standard input|$$f|"; \
done | { if grep . >&2; then false; else :; fi; } \
|| { echo '$(ME): incorrect preprocessor indentation' 1>&2; \
exit 1; }; \
@@ -789,7 +789,7 @@ sc_prohibit_cross_inclusion:
# elements added to the enum by using a _LAST marker.
sc_require_enum_last_marker:
@grep -A1 -nE '^[^#]*VIR_ENUM_IMPL *\(' $$($(VC_LIST_EXCEPT)) \
| sed -ne '/VIR_ENUM_IMPL[^,]*,$$/N' \
| $(SED) -ne '/VIR_ENUM_IMPL[^,]*,$$/N' \
-e '/VIR_ENUM_IMPL[^,]*,[^,]*[^_,][^L,][^A,][^S,][^T,],/p' \
-e '/VIR_ENUM_IMPL[^,]*,[^,]\{0,4\},/p' \
| grep . && \
@@ -944,7 +944,7 @@ ifeq (0,$(MAKELEVEL))
# b653eda3ac4864de205419d9f41eec267cb89eeb
#
# Keep this logic in sync with autogen.sh.
_submodule_hash = sed 's/^[ +-]//;s/ .*//'
_submodule_hash = $(SED) 's/^[ +-]//;s/ .*//'
_update_required := $(shell \
cd '$(srcdir)'; \
test -d .git || { echo 0; exit; }; \


+ 7
- 0
config.h.in View File

@@ -1135,6 +1135,9 @@
/* Define to 1 if you have the <libintl.h> header file. */
#undef HAVE_LIBINTL_H

/* Define to 1 if you have the `kvm' library (-lkvm). */
#undef HAVE_LIBKVM

/* whether the netlink library is available */
#undef HAVE_LIBNL

@@ -2308,6 +2311,10 @@
/* path to directory containing UUCP device lock files */
#undef VIR_CHRDEV_LOCK_FILE_PATH

/* Define to empty or 'const' depending on how SELinux qualifies its security
context parameters */
#undef VIR_SELINUX_CTX_CONST

/* Define to the absolute path of a shell that does not truncate on <>
redirection, if /bin/sh does not fit the bill */
#undef VIR_WRAPPER_SHELL


+ 97
- 10
configure View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for libvirt 1.2.4.
# Generated by GNU Autoconf 2.69 for libvirt 1.2.5.
#
# Report bugs to <libvir-list@redhat.com>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libvirt'
PACKAGE_TARNAME='libvirt'
PACKAGE_VERSION='1.2.4'
PACKAGE_STRING='libvirt 1.2.4'
PACKAGE_VERSION='1.2.5'
PACKAGE_STRING='libvirt 1.2.5'
PACKAGE_BUGREPORT='libvir-list@redhat.com'
PACKAGE_URL='http://libvirt.org'

@@ -3050,7 +3050,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures libvirt 1.2.4 to adapt to many kinds of systems.
\`configure' configures libvirt 1.2.5 to adapt to many kinds of systems.

Usage: $0 [OPTION]... [VAR=VALUE]...

@@ -3120,7 +3120,7 @@ fi

if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of libvirt 1.2.4:";;
short | recursive ) echo "Configuration of libvirt 1.2.5:";;
esac
cat <<\_ACEOF

@@ -3439,7 +3439,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
libvirt configure 1.2.4
libvirt configure 1.2.5
generated by GNU Autoconf 2.69

Copyright (C) 2012 Free Software Foundation, Inc.
@@ -4148,7 +4148,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by libvirt $as_me 1.2.4, which was
It was created by libvirt $as_me 1.2.5, which was
generated by GNU Autoconf 2.69. Invocation command line was

$ $0 $@
@@ -5140,7 +5140,7 @@ fi

# Define the identity of the package.
PACKAGE='libvirt'
VERSION='1.2.4'
VERSION='1.2.5'


cat >>confdefs.h <<_ACEOF
@@ -58857,6 +58857,41 @@ fi


if test "$with_selinux" = "yes"; then
# libselinux changed signatures between 2.2 and 2.3
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for selinux setcon parameter type" >&5
$as_echo_n "checking for selinux setcon parameter type... " >&6; }
if ${lv_cv_setcon_const+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

#include <selinux/selinux.h>
int setcon(char *context);

int
main ()
{

;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
lv_cv_setcon_const=''
else
lv_cv_setcon_const='const'
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lv_cv_setcon_const" >&5
$as_echo "$lv_cv_setcon_const" >&6; }

cat >>confdefs.h <<_ACEOF
#define VIR_SELINUX_CTX_CONST $lv_cv_setcon_const
_ACEOF


{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SELinux mount point" >&5
$as_echo_n "checking SELinux mount point... " >&6; }
if test "$with_selinux_mount" = "check" || test -z "$with_selinux_mount"; then
@@ -69135,6 +69170,58 @@ $as_echo "#define HAVE_BSD_CPU_AFFINITY 1" >>confdefs.h
fi


# Check for BSD kvm (kernel memory interface)
if test $with_freebsd = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for kvm_getprocs in -lkvm" >&5
$as_echo_n "checking for kvm_getprocs in -lkvm... " >&6; }
if ${ac_cv_lib_kvm_kvm_getprocs+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lkvm $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char kvm_getprocs ();
int
main ()
{
return kvm_getprocs ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_kvm_kvm_getprocs=yes
else
ac_cv_lib_kvm_kvm_getprocs=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_getprocs" >&5
$as_echo "$ac_cv_lib_kvm_kvm_getprocs" >&6; }
if test "x$ac_cv_lib_kvm_kvm_getprocs" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBKVM 1
_ACEOF

LIBS="-lkvm $LIBS"

else
as_fn_error $? "BSD kernel memory interface library is required to build on FreeBSD" "$LINENO" 5

fi

fi

# Check if we need to look for ifconfig
if test "$want_ifconfig" = "yes"; then
# Extract the first word of "ifconfig", so it can be a program name with args.
@@ -70254,7 +70341,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by libvirt $as_me 1.2.4, which was
This file was extended by libvirt $as_me 1.2.5, which was
generated by GNU Autoconf 2.69. Invocation command line was

CONFIG_FILES = $CONFIG_FILES
@@ -70325,7 +70412,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
libvirt config.status 1.2.4
libvirt config.status 1.2.5
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"



+ 8
- 1
configure.ac View File

@@ -16,7 +16,7 @@ dnl You should have received a copy of the GNU Lesser General Public
dnl License along with this library. If not, see
dnl <http://www.gnu.org/licenses/>.

AC_INIT([libvirt], [1.2.4], [libvir-list@redhat.com], [], [http://libvirt.org])
AC_INIT([libvirt], [1.2.5], [libvir-list@redhat.com], [], [http://libvirt.org])
AC_CONFIG_SRCDIR([src/libvirt.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
@@ -2684,6 +2684,13 @@ AC_CHECK_DECLS([cpuset_getaffinity],
#include <sys/cpuset.h>
])

# Check for BSD kvm (kernel memory interface)
if test $with_freebsd = yes; then
AC_CHECK_LIB([kvm], [kvm_getprocs], [],
[AC_MSG_ERROR([BSD kernel memory interface library is required to build on FreeBSD])]
)
fi

# Check if we need to look for ifconfig
if test "$want_ifconfig" = "yes"; then
AC_PATH_PROG([IFCONFIG_PATH], [ifconfig])


+ 1
- 1
daemon/libvirtd.8.in View File

@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "LIBVIRTD 8"
.TH LIBVIRTD 8 "2013-08-28" "libvirt-1.2.4" "Virtualization Support"
.TH LIBVIRTD 8 "2013-08-28" "libvirt-1.2.5" "Virtualization Support"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l


+ 37
- 0
daemon/remote.c View File

@@ -6077,6 +6077,43 @@ qemuDispatchConnectDomainMonitorEventDeregister(virNetServerPtr server ATTRIBUTE
return rv;
}

static int
remoteDispatchDomainGetTime(virNetServerPtr server ATTRIBUTE_UNUSED,
virNetServerClientPtr client,
virNetMessagePtr msg ATTRIBUTE_UNUSED,
virNetMessageErrorPtr rerr,
remote_domain_get_time_args *args,
remote_domain_get_time_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
long long seconds;
unsigned int nseconds;
struct daemonClientPrivate *priv =
virNetServerClientGetPrivateData(client);

if (!priv->conn) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}

if (!(dom = get_nonnull_domain(priv->conn, args->dom)))
goto cleanup;

if (virDomainGetTime(dom, &seconds, &nseconds, args->flags) < 0)
goto cleanup;

ret->seconds = seconds;
ret->nseconds = nseconds;
rv = 0;

cleanup:
if (rv < 0)
virNetMessageSaveError(rerr);
if (dom)
virDomainFree(dom);
return rv;
}

/*----- Helpers. -----*/



+ 222
- 0
daemon/remote_dispatch.h View File

@@ -3471,6 +3471,118 @@ cleanup:



static int remoteDispatchDomainFSFreeze(
virNetServerPtr server,
virNetServerClientPtr client,
virNetMessagePtr msg,
virNetMessageErrorPtr rerr,
remote_domain_fsfreeze_args *args,
remote_domain_fsfreeze_ret *ret);
static int remoteDispatchDomainFSFreezeHelper(
virNetServerPtr server,
virNetServerClientPtr client,
virNetMessagePtr msg,
virNetMessageErrorPtr rerr,
void *args,
void *ret)
{
VIR_DEBUG("server=%p client=%p msg=%p rerr=%p args=%p ret=%p", server, client, msg, rerr, args, ret);
return remoteDispatchDomainFSFreeze(server, client, msg, rerr, args, ret);
}
static int remoteDispatchDomainFSFreeze(
virNetServerPtr server ATTRIBUTE_UNUSED,
virNetServerClientPtr client,
virNetMessagePtr msg ATTRIBUTE_UNUSED,
virNetMessageErrorPtr rerr,
remote_domain_fsfreeze_args *args,
remote_domain_fsfreeze_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
int filesystems;
struct daemonClientPrivate *priv =
virNetServerClientGetPrivateData(client);

if (!priv->conn) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}

if (!(dom = get_nonnull_domain(priv->conn, args->dom)))
goto cleanup;

if ((filesystems = virDomainFSFreeze(dom, (const char **) args->mountpoints.mountpoints_val, args->mountpoints.mountpoints_len, args->flags)) < 0)
goto cleanup;

ret->filesystems = filesystems;
rv = 0;

cleanup:
if (rv < 0)
virNetMessageSaveError(rerr);
if (dom)
virDomainFree(dom);
return rv;
}



static int remoteDispatchDomainFSThaw(
virNetServerPtr server,
virNetServerClientPtr client,
virNetMessagePtr msg,
virNetMessageErrorPtr rerr,
remote_domain_fsthaw_args *args,
remote_domain_fsthaw_ret *ret);
static int remoteDispatchDomainFSThawHelper(
virNetServerPtr server,
virNetServerClientPtr client,
virNetMessagePtr msg,
virNetMessageErrorPtr rerr,
void *args,
void *ret)
{
VIR_DEBUG("server=%p client=%p msg=%p rerr=%p args=%p ret=%p", server, client, msg, rerr, args, ret);
return remoteDispatchDomainFSThaw(server, client, msg, rerr, args, ret);
}
static int remoteDispatchDomainFSThaw(
virNetServerPtr server ATTRIBUTE_UNUSED,
virNetServerClientPtr client,
virNetMessagePtr msg ATTRIBUTE_UNUSED,
virNetMessageErrorPtr rerr,
remote_domain_fsthaw_args *args,
remote_domain_fsthaw_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
int filesystems;
struct daemonClientPrivate *priv =
virNetServerClientGetPrivateData(client);

if (!priv->conn) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}

if (!(dom = get_nonnull_domain(priv->conn, args->dom)))
goto cleanup;

if ((filesystems = virDomainFSThaw(dom, (const char **) args->mountpoints.mountpoints_val, args->mountpoints.mountpoints_len, args->flags)) < 0)
goto cleanup;

ret->filesystems = filesystems;
rv = 0;

cleanup:
if (rv < 0)
virNetMessageSaveError(rerr);
if (dom)
virDomainFree(dom);
return rv;
}



static int remoteDispatchDomainFSTrim(
virNetServerPtr server,
virNetServerClientPtr client,
@@ -4460,6 +4572,28 @@ static int remoteDispatchDomainGetStateHelper(



static int remoteDispatchDomainGetTime(
virNetServerPtr server,
virNetServerClientPtr client,
virNetMessagePtr msg,
virNetMessageErrorPtr rerr,
remote_domain_get_time_args *args,
remote_domain_get_time_ret *ret);
static int remoteDispatchDomainGetTimeHelper(
virNetServerPtr server,
virNetServerClientPtr client,
virNetMessagePtr msg,
virNetMessageErrorPtr rerr,
void *args,
void *ret)
{
VIR_DEBUG("server=%p client=%p msg=%p rerr=%p args=%p ret=%p", server, client, msg, rerr, args, ret);
return remoteDispatchDomainGetTime(server, client, msg, rerr, args, ret);
}
/* remoteDispatchDomainGetTime body has to be implemented manually */



static int remoteDispatchDomainGetVcpuPinInfo(
virNetServerPtr server,
virNetServerClientPtr client,
@@ -8066,6 +8200,58 @@ cleanup:



static int remoteDispatchDomainSetTime(
virNetServerPtr server,
virNetServerClientPtr client,
virNetMessagePtr msg,
virNetMessageErrorPtr rerr,
remote_domain_set_time_args *args);
static int remoteDispatchDomainSetTimeHelper(
virNetServerPtr server,
virNetServerClientPtr client,
virNetMessagePtr msg,
virNetMessageErrorPtr rerr,
void *args,
void *ret ATTRIBUTE_UNUSED)
{
VIR_DEBUG("server=%p client=%p msg=%p rerr=%p args=%p ret=%p", server, client, msg, rerr, args, ret);
return remoteDispatchDomainSetTime(server, client, msg, rerr, args);
}
static int remoteDispatchDomainSetTime(
virNetServerPtr server ATTRIBUTE_UNUSED,
virNetServerClientPtr client,
virNetMessagePtr msg ATTRIBUTE_UNUSED,
virNetMessageErrorPtr rerr,
remote_domain_set_time_args *args)
{
int rv = -1;
virDomainPtr dom = NULL;
struct daemonClientPrivate *priv =
virNetServerClientGetPrivateData(client);

if (!priv->conn) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}

if (!(dom = get_nonnull_domain(priv->conn, args->dom)))
goto cleanup;

if (virDomainSetTime(dom, args->seconds, args->nseconds, args->flags) < 0)
goto cleanup;

rv = 0;

cleanup:
if (rv < 0)
virNetMessageSaveError(rerr);
if (dom)
virDomainFree(dom);
return rv;
}



static int remoteDispatchDomainSetVcpus(
virNetServerPtr server,
virNetServerClientPtr client,
@@ -17149,5 +17335,41 @@ virNetServerProgramProc remoteProcs[] = {
true,
0
},
{ /* Method DomainFSFreeze => 335 */
remoteDispatchDomainFSFreezeHelper,
sizeof(remote_domain_fsfreeze_args),
(xdrproc_t)xdr_remote_domain_fsfreeze_args,
sizeof(remote_domain_fsfreeze_ret),
(xdrproc_t)xdr_remote_domain_fsfreeze_ret,
true,
0
},
{ /* Method DomainFSThaw => 336 */
remoteDispatchDomainFSThawHelper,
sizeof(remote_domain_fsthaw_args),
(xdrproc_t)xdr_remote_domain_fsthaw_args,
sizeof(remote_domain_fsthaw_ret),
(xdrproc_t)xdr_remote_domain_fsthaw_ret,
true,
0
},
{ /* Method DomainGetTime => 337 */
remoteDispatchDomainGetTimeHelper,
sizeof(remote_domain_get_time_args),
(xdrproc_t)xdr_remote_domain_get_time_args,
sizeof(remote_domain_get_time_ret),
(xdrproc_t)xdr_remote_domain_get_time_ret,
true,
0
},
{ /* Method DomainSetTime => 338 */
remoteDispatchDomainSetTimeHelper,
sizeof(remote_domain_set_time_args),
(xdrproc_t)xdr_remote_domain_set_time_args,
0,
(xdrproc_t)xdr_void,
true,
0
},
};
size_t remoteNProcs = ARRAY_CARDINALITY(remoteProcs);

+ 1
- 1
docs/acl.html
File diff suppressed because it is too large
View File


+ 8
- 0
docs/aclperms.htmlinc View File

@@ -90,6 +90,10 @@
<td><a name="perm_domain_delete">delete</a></td>
<td>Delete domain</td>
</tr>
<tr>
<td><a name="perm_domain_fs_freeze">fs-freeze</a></td>
<td>Freeze and thaw domain filesystems</td>
</tr>
<tr>
<td><a name="perm_domain_fs_trim">fs-trim</a></td>
<td>Trim domain filesystems</td>
@@ -162,6 +166,10 @@
<td><a name="perm_domain_send_signal">send-signal</a></td>
<td>Send domain signal</td>
</tr>
<tr>
<td><a name="perm_domain_set_time">set-time</a></td>
<td>Write domain time</td>
</tr>
<tr>
<td><a name="perm_domain_snapshot">snapshot</a></td>
<td>Snapshot domain</td>


+ 1
- 1
docs/apibuild.py View File

@@ -926,7 +926,7 @@ class CParser:
if i < len(l) and l[i] == ' ':
i = i + 1
l = l[i:]
if len(l) >= 6 and l[0:7] == "returns" or l[0:7] == "Returns":
if len(l) >= 6 and l[0:7] == "Returns":
try:
l = string.split(l, ' ', 1)[1]
except:


+ 4
- 0
docs/apps.html View File

@@ -188,6 +188,10 @@
system through the use of scripts. Starting from v2.4, the front-end
application stap can use libvirt to gather data within virtual
machines.
</dd><dt><a href="https://github.com/pradels/vagrant-libvirt/" shape="rect">vagrant-libvirt</a></dt><dd>
Vagrant-Libvirt is a Vagrant plugin that uses libvirt to manage virtual
machines. It is a command line tool for developers that makes it very
fast and easy to deploy and re-deploy an environment of vm's.
</dd></dl>
<h2>
<a name="configmgmt" shape="rect" id="configmgmt">Configuration Management</a>


+ 6
- 0
docs/apps.html.in View File

@@ -110,6 +110,12 @@
application stap can use libvirt to gather data within virtual
machines.
</dd>
<dt><a href="https://github.com/pradels/vagrant-libvirt/">vagrant-libvirt</a></dt>
<dd>
Vagrant-Libvirt is a Vagrant plugin that uses libvirt to manage virtual
machines. It is a command line tool for developers that makes it very
fast and easy to deploy and re-deploy an environment of vm's.
</dd>
</dl>

<h2><a name="configmgmt">Configuration Management</a></h2>


+ 95
- 20
docs/devhelp/libvirt-libvirt.html View File

@@ -248,6 +248,7 @@ typedef <a href="libvirt-libvirt.html#virDomain">virDomain</a> * <a href="#virDo
typedef enum <a href="#virDomainRebootFlagValues">virDomainRebootFlagValues</a>;
typedef enum <a href="#virDomainRunningReason">virDomainRunningReason</a>;
typedef enum <a href="#virDomainSaveRestoreFlags">virDomainSaveRestoreFlags</a>;
typedef enum <a href="#virDomainSetTimeFlags">virDomainSetTimeFlags</a>;
typedef enum <a href="#virDomainShutdownFlagValues">virDomainShutdownFlagValues</a>;
typedef enum <a href="#virDomainShutdownReason">virDomainShutdownReason</a>;
typedef enum <a href="#virDomainShutoffReason">virDomainShutoffReason</a>;
@@ -430,6 +431,8 @@ int <a href="#virDomainDestroy">virDomainDestroy</a> (<a href="libvirt-libvirt.
int <a href="#virDomainDestroyFlags">virDomainDestroyFlags</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int flags);
int <a href="#virDomainDetachDevice">virDomainDetachDevice</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml);
int <a href="#virDomainDetachDeviceFlags">virDomainDetachDeviceFlags</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml, <br/> unsigned int flags);
int <a href="#virDomainFSFreeze">virDomainFSFreeze</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char ** mountpoints, <br/> unsigned int nmountpoints, <br/> unsigned int flags);
int <a href="#virDomainFSThaw">virDomainFSThaw</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char ** mountpoints, <br/> unsigned int nmountpoints, <br/> unsigned int flags);
int <a href="#virDomainFSTrim">virDomainFSTrim</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char * mountPoint, <br/> unsigned long long minimum, <br/> unsigned int flags);
int <a href="#virDomainFree">virDomainFree</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
int <a href="#virDomainGetAutostart">virDomainGetAutostart</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int * autostart);
@@ -461,6 +464,7 @@ char * <a href="#virDomainGetSchedulerType">virDomainGetSchedulerType</a> (<a hr
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="#virDomainGetSecurityLabelList">virDomainGetSecurityLabelList</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virSecurityLabelPtr">virSecurityLabelPtr</a> * seclabels);
int <a href="#virDomainGetState">virDomainGetState</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int * state, <br/> int * reason, <br/> unsigned int flags);
int <a href="#virDomainGetTime">virDomainGetTime</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> long long * seconds, <br/> unsigned int * nseconds, <br/> unsigned int flags);
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="#virDomainGetVcpuPinInfo">virDomainGetVcpuPinInfo</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int ncpumaps, <br/> unsigned char * cpumaps, <br/> int maplen, <br/> unsigned int flags);
@@ -529,6 +533,7 @@ int <a href="#virDomainSetMetadata">virDomainSetMetadata</a> (<a href="libvirt-
int <a href="#virDomainSetNumaParameters">virDomainSetNumaParameters</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virTypedParameterPtr">virTypedParameterPtr</a> params, <br/> int nparams, <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#virTypedParameterPtr">virTypedParameterPtr</a> params, <br/> int nparams);
int <a href="#virDomainSetSchedulerParametersFlags">virDomainSetSchedulerParametersFlags</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virTypedParameterPtr">virTypedParameterPtr</a> params, <br/> int nparams, <br/> unsigned int flags);
int <a href="#virDomainSetTime">virDomainSetTime</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> long long seconds, <br/> unsigned int nseconds, <br/> unsigned int flags);
int <a href="#virDomainSetVcpus">virDomainSetVcpus</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int nvcpus);
int <a href="#virDomainSetVcpusFlags">virDomainSetVcpusFlags</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int nvcpus, <br/> unsigned int flags);
int <a href="#virDomainShutdown">virDomainShutdown</a> (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
@@ -2093,6 +2098,7 @@ The content of this structure is not made public by the API.
<a name="VIR_DOMAIN_REBOOT_GUEST_AGENT">VIR_DOMAIN_REBOOT_GUEST_AGENT</a> = 2 /* Use guest agent */
<a name="VIR_DOMAIN_REBOOT_INITCTL">VIR_DOMAIN_REBOOT_INITCTL</a> = 4 /* Use initctl */
<a name="VIR_DOMAIN_REBOOT_SIGNAL">VIR_DOMAIN_REBOOT_SIGNAL</a> = 8 /* Send a signal */
<a name="VIR_DOMAIN_REBOOT_PARAVIRT">VIR_DOMAIN_REBOOT_PARAVIRT</a> = 16 /* Use paravirt guest control */
};
</pre><p/>
</div>
@@ -2119,6 +2125,12 @@ The content of this structure is not made public by the API.
<a name="VIR_DOMAIN_SAVE_PAUSED">VIR_DOMAIN_SAVE_PAUSED</a> = 4 /* Favor paused over running */
};
</pre><p/>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainSetTimeFlags">Enum </a>virDomainSetTimeFlags</h3><pre class="programlisting">enum <a href="#virDomainSetTimeFlags">virDomainSetTimeFlags</a> {
<a name="VIR_DOMAIN_TIME_SYNC">VIR_DOMAIN_TIME_SYNC</a> = 1 /* Re-sync domain time from domain's RTC */
};
</pre><p/>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainShutdownFlagValues">Enum </a>virDomainShutdownFlagValues</h3><pre class="programlisting">enum <a href="#virDomainShutdownFlagValues">virDomainShutdownFlagValues</a> {
@@ -2127,6 +2139,7 @@ The content of this structure is not made public by the API.
<a name="VIR_DOMAIN_SHUTDOWN_GUEST_AGENT">VIR_DOMAIN_SHUTDOWN_GUEST_AGENT</a> = 2 /* Use guest agent */
<a name="VIR_DOMAIN_SHUTDOWN_INITCTL">VIR_DOMAIN_SHUTDOWN_INITCTL</a> = 4 /* Use initctl */
<a name="VIR_DOMAIN_SHUTDOWN_SIGNAL">VIR_DOMAIN_SHUTDOWN_SIGNAL</a> = 8 /* Send a signal */
<a name="VIR_DOMAIN_SHUTDOWN_PARAVIRT">VIR_DOMAIN_SHUTDOWN_PARAVIRT</a> = 16 /* Use paravirt guest control */
};
</pre><p/>
</div>
@@ -3418,8 +3431,15 @@ to match the signature of this method.

The <a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</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 network 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>net</tt></i>:</span></td><td>pointer to the network</td></tr><tr><td><span class="term"><i><tt>eventID</tt></i>:</span></td><td>the event type to receive</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling network 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 virNetworkRef(). The reference can be released once the object is no longer required by calling virNetworkFree(). The return value from this method is a positive integer identifier for the callback. To unregister a callback, this callback ID should be passed to the virConnectNetworkEventDeregisterAny() method. Returns a callback identifier on success, -1 on failure.</td></tr></tbody></table></div></div>
If the callback wishes to keep the network object after the callback
returns, it shall take a reference to it, by calling virNetworkRef().
The reference can be released once the object is no longer required
by calling virNetworkFree().

The return value from this method is a positive integer identifier
for the callback. To unregister a callback, this callback ID should
be passed to the virConnectNetworkEventDeregisterAny() method.</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>net</tt></i>:</span></td><td>pointer to the network</td></tr><tr><td><span class="term"><i><tt>eventID</tt></i>:</span></td><td>the event type to receive</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling network 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>a callback identifier on success, -1 on failure.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfDefinedDomains"/>virConnectNumOfDefinedDomains ()</h3><pre class="programlisting">int virConnectNumOfDefinedDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
</pre><p>Provides the number of defined but inactive domains.</p>
@@ -3640,7 +3660,7 @@ top-most file; restrictions may differ for online vs. offline domains.
The @disk parameter is either an unambiguous source name of the
block device (the &lt;source file='...'/&gt; sub-element, such as
"/path/to/image"), or the device target shorthand (the
&lt;target dev='...'/&gt; sub-element, such as "xvda"). Valid names
&lt;target dev='...'/&gt; sub-element, such as "vda"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
elements within //domain/devices/disk.

@@ -3666,7 +3686,7 @@ The actual speed can be determined with virDomainGetBlockJobInfo().</p>
The @disk parameter is either an unambiguous source name of the
block device (the &lt;source file='...'/&gt; sub-element, such as
"/path/to/image"), or (since 0.9.5) the device target shorthand
(the &lt;target dev='...'/&gt; sub-element, such as "xvda"). Valid names
(the &lt;target dev='...'/&gt; sub-element, such as "vda"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
elements within //domain/devices/disk.

@@ -3701,7 +3721,7 @@ bandwidth is 0, the limit will revert to the hypervisor default.
The @disk parameter is either an unambiguous source name of the
block device (the &lt;source file='...'/&gt; sub-element, such as
"/path/to/image"), or (since 0.9.5) the device target shorthand
(the &lt;target dev='...'/&gt; sub-element, such as "xvda"). Valid names
(the &lt;target dev='...'/&gt; sub-element, such as "vda"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
elements within //domain/devices/disk.</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 domain object</td></tr><tr><td><span class="term"><i><tt>disk</tt></i>:</span></td><td>path to the block device, or device shorthand</td></tr><tr><td><span class="term"><i><tt>bandwidth</tt></i>:</span></td><td>specify bandwidth limit in MiB/s</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags; not used yet, so callers should always pass 0</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of failure, 0 when successful.</td></tr></tbody></table></div></div>
@@ -3723,7 +3743,7 @@ Hence the need for this call).
The @disk parameter is either an unambiguous source name of the
block device (the &lt;source file='...'/&gt; sub-element, such as
"/path/to/image"), or (since 0.9.5) the device target shorthand
(the &lt;target dev='...'/&gt; sub-element, such as "xvda"). Valid names
(the &lt;target dev='...'/&gt; sub-element, such as "vda"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
elements within //domain/devices/disk.

@@ -3753,7 +3773,7 @@ data in the opposite direction, see virDomainBlockCommit().
The @disk parameter is either an unambiguous source name of the
block device (the &lt;source file='...'/&gt; sub-element, such as
"/path/to/image"), or (since 0.9.5) the device target shorthand
(the &lt;target dev='...'/&gt; sub-element, such as "xvda"). Valid names
(the &lt;target dev='...'/&gt; sub-element, such as "vda"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
elements within //domain/devices/disk.

@@ -3822,7 +3842,7 @@ also restrict a copy job to transient domains.
The @disk parameter is either an unambiguous source name of the
block device (the &lt;source file='...'/&gt; sub-element, such as
"/path/to/image"), or the device target shorthand (the
&lt;target dev='...'/&gt; sub-element, such as "xvda"). Valid names
&lt;target dev='...'/&gt; sub-element, such as "vda"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
elements within //domain/devices/disk.

@@ -3856,7 +3876,7 @@ to the next alignment boundary.
The @disk parameter is either an unambiguous source name of the
block device (the &lt;source file='...'/&gt; sub-element, such as
"/path/to/image"), or (since 0.9.5) the device target shorthand
(the &lt;target dev='...'/&gt; sub-element, such as "xvda"). Valid names
(the &lt;target dev='...'/&gt; sub-element, such as "vda"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
elements within //domain/devices/disk.

@@ -3870,7 +3890,7 @@ hypervisor.</p>
devices attached to the domain.

The @disk parameter is either the device target shorthand (the
&lt;target dev='...'/&gt; sub-element, such as "xvda"), or (since 0.9.8)
&lt;target dev='...'/&gt; sub-element, such as "vda"), or (since 0.9.8)
an unambiguous source name of the block device (the &lt;source
file='...'/&gt; sub-element, such as "/path/to/image"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
@@ -3891,7 +3911,7 @@ that particular statistic.</p>
devices attached to the domain.

The @disk parameter is either the device target shorthand (the
&lt;target dev='...'/&gt; sub-element, such as "xvda"), or (since 0.9.8)
&lt;target dev='...'/&gt; sub-element, such as "vda"), or (since 0.9.8)
an unambiguous source name of the block device (the &lt;source
file='...'/&gt; sub-element, such as "/path/to/image"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
@@ -4173,8 +4193,31 @@ configuration before it was actually removed by the hypervisor causing
various failures on subsequent operations. To check whether the device was
successfully removed, either recheck domain configuration using
virDomainGetXMLDesc() or add handler for VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
event. In case the device is already gone when <a href="libvirt-libvirt.html#virDomainDetachDeviceFlags">virDomainDetachDeviceFlags</a></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>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDeviceModifyFlags">virDomainDeviceModifyFlags</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the event is delivered before this API call ends. To help existing clients work better in most cases, this API will try to transform an asynchronous device removal that finishes shortly after the request into a synchronous removal. In other words, this API may wait a bit for the removal to complete in case it was not synchronous. Be aware that hotplug changes might not persist across a domain going into S4 state (also known as hibernation) unless you also modify the persistent domain definition. Returns 0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
event. In case the device is already gone when virDomainDetachDeviceFlags
returns, the event is delivered before this API call ends. To help existing
clients work better in most cases, this API will try to transform an
asynchronous device removal that finishes shortly after the request into
a synchronous removal. In other words, this API may wait a bit for the
removal to complete in case it was not synchronous.

Be aware that hotplug changes might not persist across a domain going
into S4 state (also known as hibernation) unless you also modify the
persistent domain definition.</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>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDeviceModifyFlags">virDomainDeviceModifyFlags</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainFSFreeze"/>virDomainFSFreeze ()</h3><pre class="programlisting">int virDomainFSFreeze (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char ** mountpoints, <br/> unsigned int nmountpoints, <br/> unsigned int flags)<br/>
</pre><p>Freeze specified filesystems within the guest (hence guest agent
may be required depending on hypervisor used). If @mountpoints is NULL and
@nmountpoints is 0, every mounted filesystem on the guest is frozen.
In some environments (e.g. QEMU guest with guest agent which doesn't
support mountpoints argument), @mountpoints may need to be NULL.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dom</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>mountpoints</tt></i>:</span></td><td>list of mount points to be frozen</td></tr><tr><td><span class="term"><i><tt>nmountpoints</tt></i>:</span></td><td>the number of mount points specified in @mountpoints</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags; not used yet, so callers should always pass 0</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of frozen filesystems on success, -1 otherwise.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainFSThaw"/>virDomainFSThaw ()</h3><pre class="programlisting">int virDomainFSThaw (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char ** mountpoints, <br/> unsigned int nmountpoints, <br/> unsigned int flags)<br/>
</pre><p>Thaw specified filesystems within the guest. If @mountpoints is NULL and
@nmountpoints is 0, every mounted filesystem on the guest is thawed.
In some drivers (e.g. QEMU driver), @mountpoints may need to be NULL.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dom</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>mountpoints</tt></i>:</span></td><td>list of mount points to be thawed</td></tr><tr><td><span class="term"><i><tt>nmountpoints</tt></i>:</span></td><td>the number of mount points specified in @mountpoints</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags; not used yet, so callers should always pass 0</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of thawed filesystems on success, -1 otherwise.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainFSTrim"/>virDomainFSTrim ()</h3><pre class="programlisting">int virDomainFSTrim (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char * mountPoint, <br/> unsigned long long minimum, <br/> unsigned int flags)<br/>
</pre><p>Calls FITRIM within the guest (hence guest agent may be
@@ -4223,7 +4266,7 @@ expects the caller to allocate the @params.</p>
The @disk parameter is either an unambiguous source name of the
block device (the &lt;source file='...'/&gt; sub-element, such as
"/path/to/image"), or (since 0.9.5) the device target shorthand
(the &lt;target dev='...'/&gt; sub-element, such as "xvda"). Valid names
(the &lt;target dev='...'/&gt; sub-element, such as "vda"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
elements within //domain/devices/disk.

@@ -4312,7 +4355,7 @@ unless @nparams is 0 on input.</p>
The @disk parameter is either an unambiguous source name of the
block device (the &lt;source file='...'/&gt; sub-element, such as
"/path/to/image"), or (since 0.9.5) the device target shorthand
(the &lt;target dev='...'/&gt; sub-element, such as "xvda"). Valid names
(the &lt;target dev='...'/&gt; sub-element, such as "vda"). Valid names
can be found by calling virDomainGetXMLDesc() and inspecting
elements within //domain/devices/disk.</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 domain object</td></tr><tr><td><span class="term"><i><tt>disk</tt></i>:</span></td><td>path to the block device, or device shorthand</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#virDomainBlockJobInfo">virDomainBlockJobInfo</a> structure</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags; not used yet, so callers should always pass 0</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of failure, 0 when nothing found, 1 when info was found.</td></tr></tbody></table></div></div>
@@ -4396,8 +4439,17 @@ subelement in domain XML), such as "vda", and accompanied with the error
that was seen on it. The caller is also responsible for calling free()
on each disk name returned.

In a special case when @errors is NULL and @maxerrors is 0, the function</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dom</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>errors</tt></i>:</span></td><td>array to populate on output</td></tr><tr><td><span class="term"><i><tt>maxerrors</tt></i>:</span></td><td>size of @errors array</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags; not used yet, so callers should always pass 0</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>preferred size of @errors that the caller should use to get all disk errors. Since calling virDomainGetDiskErrors(dom, NULL, 0, 0) to get preferred size of @errors array and getting the errors are two separate operations, new disks may be hotplugged to the domain and new errors may be encountered between the two calls. Thus, this function may not return all disk errors because the supplied array is not large enough. Such errors may, however, be detected by listening to domain events. Returns number of disks with errors filled in the @errors array or -1 on error.</td></tr></tbody></table></div></div>
In a special case when @errors is NULL and @maxerrors is 0, the function
returns preferred size of @errors that the caller should use to get all
disk errors.

Since calling virDomainGetDiskErrors(dom, NULL, 0, 0) to get preferred size
of @errors array and getting the errors are two separate operations, new
disks may be hotplugged to the domain and new errors may be encountered
between the two calls. Thus, this function may not return all disk errors
because the supplied array is not large enough. Such errors may, however,
be detected by listening to domain events.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dom</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>errors</tt></i>:</span></td><td>array to populate on output</td></tr><tr><td><span class="term"><i><tt>maxerrors</tt></i>:</span></td><td>size of @errors array</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags; not used yet, so callers should always pass 0</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>number of disks with errors filled in the @errors array or -1 on error.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainGetEmulatorPinInfo"/>virDomainGetEmulatorPinInfo ()</h3><pre class="programlisting">int virDomainGetEmulatorPinInfo (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned char * cpumap, <br/> int maplen, <br/> unsigned int flags)<br/>
</pre><p>Query the CPU affinity setting of all emulator threads of domain, store
@@ -4510,7 +4562,7 @@ without having to go through virDomainGetXMLDesc().

@flags controls whether the live domain or persistent
configuration will be queried.</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>type</tt></i>:</span></td><td>type of description, from <a href="libvirt-libvirt.html#virDomainMetadataType">virDomainMetadataType</a></td></tr><tr><td><span class="term"><i><tt>uri</tt></i>:</span></td><td>XML namespace identifier</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainModificationImpact">virDomainModificationImpact</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the metadata string on success (caller must free), or NULL in case of failure.</td></tr></tbody></table></div></div>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>type of metadata, from <a href="libvirt-libvirt.html#virDomainMetadataType">virDomainMetadataType</a></td></tr><tr><td><span class="term"><i><tt>uri</tt></i>:</span></td><td>XML namespace identifier</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainModificationImpact">virDomainModificationImpact</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the metadata string on success (caller must free), or NULL in case of failure.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainGetName"/>virDomainGetName ()</h3><pre class="programlisting">const char * virDomainGetName (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br/>
</pre><p>Get the public name for that domain</p>
@@ -4590,6 +4642,15 @@ string if the domain is not running under a security model.</p>
</pre><p>Extract domain state. Each state can be accompanied with a reason (if known)
which led to the state.</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>state</tt></i>:</span></td><td>returned state of the domain (one of virDomainState)</td></tr><tr><td><span class="term"><i><tt>reason</tt></i>:</span></td><td>returned reason which led to @state (one of virDomain*Reason corresponding to the current state); it is allowed to be NULL</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags; not used yet, so callers should always pass 0</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="virDomainGetTime"/>virDomainGetTime ()</h3><pre class="programlisting">int virDomainGetTime (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> long long * seconds, <br/> unsigned int * nseconds, <br/> unsigned int flags)<br/>
</pre><p>Extract information about guest time and store it into
@seconds and @nseconds. The @seconds represents the number of
seconds since the UNIX Epoch of 1970-01-01 00:00:00 in UTC.

Please note that some hypervisors may require guest agent to
be configured and running in order to run this API.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dom</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>seconds</tt></i>:</span></td><td>domain's time in seconds</td></tr><tr><td><span class="term"><i><tt>nseconds</tt></i>:</span></td><td>the nanoscond part of @seconds</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags; not used yet, so callers should always pass 0</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 otherwise.</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>
@@ -5642,7 +5703,7 @@ Not all hypervisors can support all flag combinations.</p>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainSetMetadata"/>virDomainSetMetadata ()</h3><pre class="programlisting">int virDomainSetMetadata (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int type, <br/> const char * metadata, <br/> const char * key, <br/> const char * uri, <br/> unsigned int flags)<br/>
</pre><p>Sets the appropriate domain element given by @type to the
value of @description. A @type of VIR_DOMAIN_METADATA_DESCRIPTION
value of @metadata. A @type of VIR_DOMAIN_METADATA_DESCRIPTION
is free-form text; <a href="libvirt-libvirt.html#VIR_DOMAIN_METADATA_TITLE">VIR_DOMAIN_METADATA_TITLE</a> is free-form, but no
newlines are permitted, and should be short (although the length is
not enforced). For these two options @key and @uri are irrelevant and
@@ -5659,7 +5720,7 @@ as well as quick access through virDomainGetMetadata().

@flags controls whether the live domain, persistent configuration,
or both will be modified.</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>type</tt></i>:</span></td><td>type of description, from <a href="libvirt-libvirt.html#virDomainMetadataType">virDomainMetadataType</a></td></tr><tr><td><span class="term"><i><tt>metadata</tt></i>:</span></td><td>new metadata text</td></tr><tr><td><span class="term"><i><tt>key</tt></i>:</span></td><td>XML namespace key, or NULL</td></tr><tr><td><span class="term"><i><tt>uri</tt></i>:</span></td><td>XML namespace URI, or NULL</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainModificationImpact">virDomainModificationImpact</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 in case of failure.</td></tr></tbody></table></div></div>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>type of metadata, from <a href="libvirt-libvirt.html#virDomainMetadataType">virDomainMetadataType</a></td></tr><tr><td><span class="term"><i><tt>metadata</tt></i>:</span></td><td>new metadata text</td></tr><tr><td><span class="term"><i><tt>key</tt></i>:</span></td><td>XML namespace key, or NULL</td></tr><tr><td><span class="term"><i><tt>uri</tt></i>:</span></td><td>XML namespace URI, or NULL</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainModificationImpact">virDomainModificationImpact</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 in case of failure.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainSetNumaParameters"/>virDomainSetNumaParameters ()</h3><pre class="programlisting">int virDomainSetNumaParameters (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virTypedParameterPtr">virTypedParameterPtr</a> params, <br/> int nparams, <br/> unsigned int flags)<br/>
</pre><p>Change all or a subset of the numa tunables.
@@ -5680,6 +5741,20 @@ values from <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_LIVE">VIR_DOMAIN_AFF
VIR_DOMAIN_AFFECT_CURRENT, although hypervisors vary in which
flags are supported.</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 objects</td></tr><tr><td><span class="term"><i><tt>nparams</tt></i>:</span></td><td>number of scheduler parameter objects (this value can be the same or less than the returned value nparams of virDomainGetSchedulerType)</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainModificationImpact">virDomainModificationImpact</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainSetTime"/>virDomainSetTime ()</h3><pre class="programlisting">int virDomainSetTime (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> long long seconds, <br/> unsigned int nseconds, <br/> unsigned int flags)<br/>
</pre><p>When a domain is suspended or restored from a file the
domain's OS has no idea that there was a big gap in the time.
Depending on how long the gap was, NTP might not be able to
resynchronize the guest.

This API tries to set guest time to the given value. The time
to set (@seconds and @nseconds) should be in seconds relative
to the Epoch of 1970-01-01 00:00:00 in UTC.

Please note that some hypervisors may require guest agent to
be configured and running in order to be able to run this API.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dom</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>seconds</tt></i>:</span></td><td>time to set</td></tr><tr><td><span class="term"><i><tt>nseconds</tt></i>:</span></td><td>the nanosecond part of @seconds</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainSetTimeFlags">virDomainSetTimeFlags</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 otherwise.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainSetVcpus"/>virDomainSetVcpus ()</h3><pre class="programlisting">int virDomainSetVcpus (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int nvcpus)<br/>
</pre><p>Dynamically change the number of virtual CPUs used by the domain.


+ 8
- 0
docs/devhelp/libvirt.devhelp View File

@@ -474,6 +474,7 @@
<function name="VIR_DOMAIN_REBOOT_DEFAULT" link="libvirt-libvirt.html#VIR_DOMAIN_REBOOT_DEFAULT"/>
<function name="VIR_DOMAIN_REBOOT_GUEST_AGENT" link="libvirt-libvirt.html#VIR_DOMAIN_REBOOT_GUEST_AGENT"/>
<function name="VIR_DOMAIN_REBOOT_INITCTL" link="libvirt-libvirt.html#VIR_DOMAIN_REBOOT_INITCTL"/>
<function name="VIR_DOMAIN_REBOOT_PARAVIRT" link="libvirt-libvirt.html#VIR_DOMAIN_REBOOT_PARAVIRT"/>
<function name="VIR_DOMAIN_REBOOT_SIGNAL" link="libvirt-libvirt.html#VIR_DOMAIN_REBOOT_SIGNAL"/>
<function name="VIR_DOMAIN_RUNNING" link="libvirt-libvirt.html#VIR_DOMAIN_RUNNING"/>
<function name="VIR_DOMAIN_RUNNING_BOOTED" link="libvirt-libvirt.html#VIR_DOMAIN_RUNNING_BOOTED"/>
@@ -502,6 +503,7 @@
<function name="VIR_DOMAIN_SHUTDOWN_GUEST_AGENT" link="libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN_GUEST_AGENT"/>
<function name="VIR_DOMAIN_SHUTDOWN_INITCTL" link="libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN_INITCTL"/>
<function name="VIR_DOMAIN_SHUTDOWN_LAST" link="libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN_LAST"/>
<function name="VIR_DOMAIN_SHUTDOWN_PARAVIRT" link="libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN_PARAVIRT"/>
<function name="VIR_DOMAIN_SHUTDOWN_SIGNAL" link="libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN_SIGNAL"/>
<function name="VIR_DOMAIN_SHUTDOWN_UNKNOWN" link="libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN_UNKNOWN"/>
<function name="VIR_DOMAIN_SHUTDOWN_USER" link="libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN_USER"/>
@@ -545,6 +547,7 @@
<function name="VIR_DOMAIN_START_BYPASS_CACHE" link="libvirt-libvirt.html#VIR_DOMAIN_START_BYPASS_CACHE"/>
<function name="VIR_DOMAIN_START_FORCE_BOOT" link="libvirt-libvirt.html#VIR_DOMAIN_START_FORCE_BOOT"/>
<function name="VIR_DOMAIN_START_PAUSED" link="libvirt-libvirt.html#VIR_DOMAIN_START_PAUSED"/>
<function name="VIR_DOMAIN_TIME_SYNC" link="libvirt-libvirt.html#VIR_DOMAIN_TIME_SYNC"/>
<function name="VIR_DOMAIN_UNDEFINE_MANAGED_SAVE" link="libvirt-libvirt.html#VIR_DOMAIN_UNDEFINE_MANAGED_SAVE"/>
<function name="VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA" link="libvirt-libvirt.html#VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA"/>
<function name="VIR_DOMAIN_VCPU_CONFIG" link="libvirt-libvirt.html#VIR_DOMAIN_VCPU_CONFIG"/>
@@ -925,6 +928,7 @@
<function name="virDomainRebootFlagValues" link="libvirt-libvirt.html#virDomainRebootFlagValues"/>
<function name="virDomainRunningReason" link="libvirt-libvirt.html#virDomainRunningReason"/>
<function name="virDomainSaveRestoreFlags" link="libvirt-libvirt.html#virDomainSaveRestoreFlags"/>
<function name="virDomainSetTimeFlags" link="libvirt-libvirt.html#virDomainSetTimeFlags"/>
<function name="virDomainShutdownFlagValues" link="libvirt-libvirt.html#virDomainShutdownFlagValues"/>
<function name="virDomainShutdownReason" link="libvirt-libvirt.html#virDomainShutdownReason"/>
<function name="virDomainShutoffReason" link="libvirt-libvirt.html#virDomainShutoffReason"/>
@@ -1149,6 +1153,8 @@
<function name="virDomainDestroyFlags ()" link="libvirt-libvirt.html#virDomainDestroyFlags"/>
<function name="virDomainDetachDevice ()" link="libvirt-libvirt.html#virDomainDetachDevice"/>
<function name="virDomainDetachDeviceFlags ()" link="libvirt-libvirt.html#virDomainDetachDeviceFlags"/>
<function name="virDomainFSFreeze ()" link="libvirt-libvirt.html#virDomainFSFreeze"/>
<function name="virDomainFSThaw ()" link="libvirt-libvirt.html#virDomainFSThaw"/>
<function name="virDomainFSTrim ()" link="libvirt-libvirt.html#virDomainFSTrim"/>
<function name="virDomainFree ()" link="libvirt-libvirt.html#virDomainFree"/>
<function name="virDomainGetAutostart ()" link="libvirt-libvirt.html#virDomainGetAutostart"/>
@@ -1180,6 +1186,7 @@
<function name="virDomainGetSecurityLabel ()" link="libvirt-libvirt.html#virDomainGetSecurityLabel"/>
<function name="virDomainGetSecurityLabelList ()" link="libvirt-libvirt.html#virDomainGetSecurityLabelList"/>
<function name="virDomainGetState ()" link="libvirt-libvirt.html#virDomainGetState"/>
<function name="virDomainGetTime ()" link="libvirt-libvirt.html#virDomainGetTime"/>
<function name="virDomainGetUUID ()" link="libvirt-libvirt.html#virDomainGetUUID"/>
<function name="virDomainGetUUIDString ()" link="libvirt-libvirt.html#virDomainGetUUIDString"/>
<function name="virDomainGetVcpuPinInfo ()" link="libvirt-libvirt.html#virDomainGetVcpuPinInfo"/>
@@ -1248,6 +1255,7 @@
<function name="virDomainSetNumaParameters ()" link="libvirt-libvirt.html#virDomainSetNumaParameters"/>
<function name="virDomainSetSchedulerParameters ()" link="libvirt-libvirt.html#virDomainSetSchedulerParameters"/>
<function name="virDomainSetSchedulerParametersFlags ()" link="libvirt-libvirt.html#virDomainSetSchedulerParametersFlags"/>
<function name="virDomainSetTime ()" link="libvirt-libvirt.html#virDomainSetTime"/>
<function name="virDomainSetVcpus ()" link="libvirt-libvirt.html#virDomainSetVcpus"/>
<function name="virDomainSetVcpusFlags ()" link="libvirt-libvirt.html#virDomainSetVcpusFlags"/>
<function name="virDomainShutdown ()" link="libvirt-libvirt.html#virDomainShutdown"/>


+ 24
- 0
docs/drvbhyve.html View File

@@ -190,6 +190,8 @@
<a href="#usage">Guest usage / management</a>
<ul><li>
<a href="#console">Connecting to a guest console</a>
</li><li>
<a href="#xmltonative">Converting from domain XML to Bhyve args</a>
</li></ul>
</li></ul>
<p>
@@ -283,6 +285,7 @@ the following to the domain XML (<span class="since">Since 1.2.4</span>):
&lt;/serial&gt;
&lt;/devices&gt;
...</pre>
<p>Make sure to load the <code>nmdm</code> kernel module if you plan to use that.</p>
<p>
Then <code>virsh console</code> command can be used to connect to the text console
of a guest.</p>
@@ -292,6 +295,27 @@ until the console is opened by a client. This bug was fixed in FreeBSD
an older version is used, one either has to open a console manually with <code>virsh console</code>
to let a guest boot or start a guest using:</p>
<pre xml:space="preserve">start --console domname</pre>
<h3>
<a name="xmltonative" shape="rect" id="xmltonative">Converting from domain XML to Bhyve args</a>
<a class="headerlink" href="#xmltonative" title="Permalink to this headline">¶</a>
</h3>
<p>
The <code>virsh domxml-to-native</code> command can preview the actual
<code>bhyve</code> commands that will be executed for a given domain.
It outputs two lines, the first line is a <code>bhyveload</code> command and
the second is a <code>bhyve</code> command.
</p>
<p>Please note that the <code>virsh domxml-to-native</code> doesn't do any
real actions other than printing the command, for example, it doesn't try to
find a proper TAP interface and create it, like what is done when starting
a domain; and always returns <code>tap0</code> for the network interface. So
if you're going to run these commands manually, most likely you might want to
tweak them.</p>
<pre xml:space="preserve">
# virsh -c "bhyve:///system" domxml-to-native --format bhyve-argv --xml /path/to/bhyve.xml
/usr/sbin/bhyveload -m 214 -d /home/user/vm1.img vm1
/usr/sbin/bhyve -c 2 -m 214 -A -I -H -P -s 0:0,hostbridge -s 3:0,virtio-net,tap0,mac=52:54:00:5d:74:e3 -s 2:0,virtio-blk,/home/user/vm1.img -s 1,lpc -l com1,/dev/nmdm0A vm1
</pre>
</div>
</div>
<div id="footer">


+ 24
- 0
docs/drvbhyve.html.in View File

@@ -98,6 +98,9 @@ the following to the domain XML (<span class="since">Since 1.2.4</span>):
&lt;/devices&gt;
...</pre>


<p>Make sure to load the <code>nmdm</code> kernel module if you plan to use that.</p>

<p>
Then <code>virsh console</code> command can be used to connect to the text console
of a guest.</p>
@@ -110,6 +113,27 @@ to let a guest boot or start a guest using:</p>

<pre>start --console domname</pre>

<h3><a name="xmltonative">Converting from domain XML to Bhyve args</a></h3>

<p>
The <code>virsh domxml-to-native</code> command can preview the actual
<code>bhyve</code> commands that will be executed for a given domain.
It outputs two lines, the first line is a <code>bhyveload</code> command and
the second is a <code>bhyve</code> command.
</p>

<p>Please note that the <code>virsh domxml-to-native</code> doesn't do any
real actions other than printing the command, for example, it doesn't try to
find a proper TAP interface and create it, like what is done when starting
a domain; and always returns <code>tap0</code> for the network interface. So
if you're going to run these commands manually, most likely you might want to
tweak them.</p>

<pre>
# virsh -c "bhyve:///system" domxml-to-native --format bhyve-argv --xml /path/to/bhyve.xml
/usr/sbin/bhyveload -m 214 -d /home/user/vm1.img vm1
/usr/sbin/bhyve -c 2 -m 214 -A -I -H -P -s 0:0,hostbridge -s 3:0,virtio-net,tap0,mac=52:54:00:5d:74:e3 -s 2:0,virtio-blk,/home/user/vm1.img -s 1,lpc -l com1,/dev/nmdm0A vm1
</pre>

</body>
</html>

+ 2
- 2
docs/drvesx.html View File

@@ -361,7 +361,7 @@ vpx://example-vcenter.com/folder1/dc1/folder2/example-esx.com
<code>0</code> or <code>1</code>
</td><td rowspan="1" colspan="1">
If set to 1, this disables libcurl client checks of the server's
SSL certificate. The default value it 0. See the
SSL certificate. The default value is 0. See the
<a href="#certificates" shape="rect">Certificates for HTTPS</a> section for
details.
</td></tr><tr><td rowspan="1" colspan="1">
@@ -372,7 +372,7 @@ vpx://example-vcenter.com/folder1/dc1/folder2/example-esx.com
If set to 1, the driver answers all
<a href="#questions" shape="rect">questions</a> with the default answer.
If set to 0, questions are reported as errors. The default
value it 0. <span class="since">Since 0.7.5</span>.
value is 0. <span class="since">Since 0.7.5</span>.
</td></tr><tr><td rowspan="1" colspan="1">
<code>proxy</code>
</td><td rowspan="1" colspan="1">


+ 2
- 2
docs/drvesx.html.in View File

@@ -148,7 +148,7 @@ vpx://example-vcenter.com/folder1/dc1/folder2/example-esx.com
</td>
<td>
If set to 1, this disables libcurl client checks of the server's
SSL certificate. The default value it 0. See the
SSL certificate. The default value is 0. See the
<a href="#certificates">Certificates for HTTPS</a> section for
details.
</td>
@@ -164,7 +164,7 @@ vpx://example-vcenter.com/folder1/dc1/folder2/example-esx.com
If set to 1, the driver answers all
<a href="#questions">questions</a> with the default answer.
If set to 0, questions are reported as errors. The default
value it 0. <span class="since">Since 0.7.5</span>.
value is 0. <span class="since">Since 0.7.5</span>.
</td>
</tr>
<tr>


+ 19
- 2
docs/formatdomain.html View File

@@ -3158,11 +3158,22 @@
or if you are using a version of libvirt older than 0.9.11, you
should use standard &lt;hostdev&gt; to assign the device to the
guest instead of &lt;interface type='hostdev'/&gt;.
</p>
<p>
Similar to the functionality of a standard &lt;hostdev&gt; device,
when <code>managed</code> is "yes", it is detached from the host
before being passed on to the guest, and reattached to the host
after the guest exits. If <code>managed</code> is omitted or "no",
the user is responsible to call <code>virNodeDeviceDettach</code>
(or <code>virsh nodedev-dettach</code>) before starting the guest
or hot-plugging the device, and <code>virNodeDeviceReAttach</code>
(or <code>virsh nodedev-reattach</code>) after hot-unplug or
stopping the guest.
</p>
<pre xml:space="preserve">
...
&lt;devices&gt;
&lt;interface type='hostdev'&gt;
&lt;interface type='hostdev' managed='yes'&gt;
&lt;driver name='vfio'/&gt;
&lt;source&gt;
&lt;address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/&gt;
@@ -3886,6 +3897,12 @@ qemu-kvm -net nic,model=? /dev/null
&lt;source path='/dev/pts/3'/&gt;
&lt;target port='0'/&gt;
&lt;/serial&gt;
&lt;serial type='file&gt;
&lt;source path='/tmp/file'&gt;
&lt;seclabel model='dac' relabel='no'/&gt;
&lt;/source&gt;
&lt;target port='0'&gt;
&lt;/serial&gt;
&lt;console type='pty'&gt;
&lt;source path='/dev/pts/4'/&gt;
&lt;target port='0'/&gt;
@@ -4347,7 +4364,7 @@ qemu-kvm -net nic,model=? /dev/null
</h6>
<p>
The nmdm device driver, available on FreeBSD, provides two
tty devices connected together by a virual null modem cable.
tty devices connected together by a virtual null modem cable.
<span class="since">Since 1.2.4</span>
</p>
<pre xml:space="preserve">


+ 20
- 2
docs/formatdomain.html.in View File

@@ -3507,10 +3507,22 @@
guest instead of &lt;interface type='hostdev'/&gt;.
</p>

<p>
Similar to the functionality of a standard &lt;hostdev&gt; device,
when <code>managed</code> is "yes", it is detached from the host
before being passed on to the guest, and reattached to the host
after the guest exits. If <code>managed</code> is omitted or "no",
the user is responsible to call <code>virNodeDeviceDettach</code>
(or <code>virsh nodedev-dettach</code>) before starting the guest
or hot-plugging the device, and <code>virNodeDeviceReAttach</code>
(or <code>virsh nodedev-reattach</code>) after hot-unplug or
stopping the guest.
</p>

<pre>
...
&lt;devices&gt;
&lt;interface type='hostdev'&gt;
&lt;interface type='hostdev' managed='yes'&gt;
&lt;driver name='vfio'/&gt;
&lt;source&gt;
&lt;address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/&gt;
@@ -4299,6 +4311,12 @@ qemu-kvm -net nic,model=? /dev/null
&lt;source path='/dev/pts/3'/&gt;
&lt;target port='0'/&gt;
&lt;/serial&gt;
&lt;serial type='file&gt;
&lt;source path='/tmp/file'&gt;
&lt;seclabel model='dac' relabel='no'/&gt;
&lt;/source&gt;
&lt;target port='0'&gt;
&lt;/serial&gt;
&lt;console type='pty'&gt;
&lt;source path='/dev/pts/4'/&gt;
&lt;target port='0'/&gt;
@@ -4787,7 +4805,7 @@ qemu-kvm -net nic,model=? /dev/null

<p>
The nmdm device driver, available on FreeBSD, provides two
tty devices connected together by a virual null modem cable.
tty devices connected together by a virtual null modem cable.
<span class="since">Since 1.2.4</span>
</p>



+ 39
- 20
docs/html/libvirt-libvirt.html
File diff suppressed because it is too large
View File


+ 1
- 1
docs/hvsupport.html
File diff suppressed because it is too large
View File


+ 285
- 205
docs/hvsupport.html.in View File

<
@@ -123,7 +123,7 @@ in.
<tr>
<td><a href="html/libvirt-libvirt.html#virConnectDomainEventDeregisterAny">virConnectDomainEventDeregisterAny</a></td>
<td>0.8.0</td>
<td></td>
<td>1.2.5</td>
<td></td>
<td></td>
<td>0.9.0</td>
@@ -163,7 +163,7 @@ in.
<tr>
<td><a href="html/libvirt-libvirt.html#virConnectDomainEventRegisterAny">virConnectDomainEventRegisterAny</a></td>
<td>0.8.0</td>
<td></td>
<td>1.2.5</td>
<td></td>
<td></td>
<td>0.9.0</td>
@@ -243,7 +243,7 @@ in.
<tr>
<td><a href="html/libvirt-libvirt.html#virConnectDomainXMLToNative">virConnectDomainXMLToNative</a></td>
<td>0.6.4</td>
<td></td>
<td>1.2.5</td>
<td>0.7.2</td>
<td></td>
<td>0.9.0</td>
@@ -383,7 +383,7 @@ in.
<tr>
<td><a href="html/libvirt-libvirt.html#virConnectGetSysinfo">virConnectGetSysinfo</a></td>
<td>0.8.8</td>
<td></td>
<td>1.2.5</td>
<td></td>
<td></td>
<td>1.1.0</td>
@@ -449,7 +449,7 @@ in.
<td>0.9.8</td>
<td>0.9.8</td>
<td>0.9.8</td>
<td></td>
<td>1.2.5</td>
<td>0.9.8</td>
<td>0.9.8</td>
<td>0.9.8</td>
@@ -469,7 +469,7 @@ in.
<td></td>
<td>0.7.3</td>
<td>0.7.3</td>
<td></td>
<td>1.2.5</td>
<td>0.7.3</td>
<td>0.7.3</td>
<td>0.7.3</td>
@@ -489,7 +489,7 @@ in.
<td></td>
<td>0.7.3</td>
<td>0.7.3</td>
<td></td>
<td>1.2.5</td>
<td>0.7.3</td>
<td>0.7.3</td>
<td>0.7.3</td>
@@ -1241,6 +1241,46 @@ in.
<td></td>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainFSFreeze">virDomainFSFreeze</a></td>
<td>1.2.5</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>1.2.5</td>
<td>1.2.5</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainFSThaw">virDomainFSThaw</a></td>
<td>1.2.5</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>1.2.5</td>
<td>1.2.5</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainFSTrim">virDomainFSTrim</a></td>
<td>1.0.1</td>
<td></td>
@@ -1261,6 +1301,26 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a></td>
<td>0.2.1</td>
<td>1.2.4</td>
@@ -1301,26 +1361,6 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainGetBlockInfo">virDomainGetBlockInfo</a></td>
<td>0.8.1</td>
<td></td>
@@ -1581,6 +1621,26 @@ in.
<td>0.8.0</td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a></td>
<td>0.2.1</td>
<td></td>
@@ -1621,26 +1681,6 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainGetMetadata">virDomainGetMetadata</a></td>
<td>0.9.10</td>
<td>1.2.4</td>
@@ -1821,6 +1861,26 @@ in.
<td>0.9.2</td>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainGetTime">virDomainGetTime</a></td>
<td>1.2.5</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>1.2.5</td>
<td>1.2.5</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainGetVcpuPinInfo">virDomainGetVcpuPinInfo</a></td>
<td>0.9.3</td>
<td></td>
@@ -1881,6 +1941,26 @@ in.
<td>0.8.5</td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a></td>
<td>0.0.3</td>
<td>1.2.2</td>
@@ -1941,26 +2021,6 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainInjectNMI">virDomainInjectNMI</a></td>
<td>0.9.2</td>
<td></td>
@@ -2201,6 +2261,26 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainMemoryPeek">virDomainMemoryPeek</a></td>
<td>0.4.2</td>
<td></td>
@@ -2261,26 +2341,6 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainMigrateBegin3">virDomainMigrateBegin3</a></td>
<td>0.9.2</td>
<td></td>
@@ -2521,6 +2581,26 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainMigratePerform3Params">virDomainMigratePerform3Params</a></td>
<td>1.1.0</td>
<td></td>
@@ -2581,26 +2661,6 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainMigratePrepare3">virDomainMigratePrepare3</a></td>
<td>0.9.2</td>
<td></td>
@@ -2841,6 +2901,26 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainPMWakeup">virDomainPMWakeup</a></td>
<td>0.9.11</td>
<td></td>
@@ -2901,26 +2981,6 @@ in.
<td>0.8.0</td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainPinVcpuFlags">virDomainPinVcpuFlags</a></td>
<td>0.9.3</td>
<td></td>
@@ -3161,6 +3221,26 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>
<th>lxc</th>
<th>openvz</th>
<th>parallels</th>
<th>phyp</th>
<th>qemu</th>
<th>remote</th>
<th>test</th>
<th>uml</th>
<th>vbox</th>
<th>vmware</th>
<th>xen</th>
<th>xenapi</th>
</tr>
<tr>
<td><a href="html/libvirt-libvirt.html#virDomainSaveImageDefineXML">virDomainSaveImageDefineXML</a></td>
<td>0.9.4</td>
<td></td>
@@ -3221,26 +3301,6 @@ in.
<td></td>
</tr>
<tr>
<th>API</th>
<th>Version</th>
<th>bhyve</th>
<th>esx</th>
<th>hyperv</th>
<th>libxl</th>