summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2013-07-01 23:27:12 +0200
committerGuido Günther <agx@sigxcpu.org>2013-07-01 23:27:12 +0200
commit985164b3f9a6e58010385eb5fb3cdbc9d8565468 (patch)
treee53c02caca01bf243fd83c35728d0d96d82a0c7b /daemon
parent3a2c75c79b9650a7a8ecf0f80fc8caaf68d2693d (diff)
New upstream version 1.1.0
Diffstat (limited to 'daemon')
-rw-r--r--daemon/Makefile.am1
-rw-r--r--daemon/Makefile.in2
-rw-r--r--daemon/libvirtd-config.c12
-rw-r--r--daemon/libvirtd-config.h2
-rw-r--r--daemon/libvirtd.8.in2
-rw-r--r--daemon/libvirtd.aug1
-rw-r--r--daemon/libvirtd.c33
-rw-r--r--daemon/libvirtd.conf9
-rw-r--r--daemon/libvirtd.h4
-rw-r--r--daemon/remote.c331
-rw-r--r--daemon/remote_dispatch.h185
-rw-r--r--daemon/test_libvirtd.aug.in3
12 files changed, 577 insertions, 8 deletions
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index fca0eacf7..e8a837158 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -24,6 +24,7 @@ INCLUDES = \
-I$(top_srcdir)/src/conf \
-I$(top_srcdir)/src/rpc \
-I$(top_srcdir)/src/remote \
+ -I$(top_srcdir)/src/access \
$(GETTEXT_CPPFLAGS)
CLEANFILES =
diff --git a/daemon/Makefile.in b/daemon/Makefile.in
index ea7fded5c..9be579213 100644
--- a/daemon/Makefile.in
+++ b/daemon/Makefile.in
@@ -473,7 +473,6 @@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
BLKID_CFLAGS = @BLKID_CFLAGS@
BLKID_LIBS = @BLKID_LIBS@
-BRCTL = @BRCTL@
BYTESWAP_H = @BYTESWAP_H@
CAPNG_CFLAGS = @CAPNG_CFLAGS@
CAPNG_LIBS = @CAPNG_LIBS@
@@ -1874,6 +1873,7 @@ INCLUDES = \
-I$(top_srcdir)/src/conf \
-I$(top_srcdir)/src/rpc \
-I$(top_srcdir)/src/remote \
+ -I$(top_srcdir)/src/access \
$(GETTEXT_CPPFLAGS)
CLEANFILES = $(am__append_1) $(BUILT_SOURCES) $(man8_MANS) *.cov \
diff --git a/daemon/libvirtd-config.c b/daemon/libvirtd-config.c
index 66dfb4aca..017d47084 100644
--- a/daemon/libvirtd-config.c
+++ b/daemon/libvirtd-config.c
@@ -283,7 +283,7 @@ daemonConfigNew(bool privileged ATTRIBUTE_UNUSED)
* running in disconnected operation, and report a less
* useful Avahi string
*/
- ret = virAsprintf(&data->mdns_name, "Virtualization Host");
+ ret = VIR_STRDUP(data->mdns_name, "Virtualization Host");
} else {
char *tmp;
/* Extract the host part of the potentially FQDN */
@@ -316,6 +316,12 @@ daemonConfigFree(struct daemonConfig *data)
VIR_FREE(data->listen_addr);
VIR_FREE(data->tls_port);
VIR_FREE(data->tcp_port);
+ tmp = data->access_drivers;
+ while (tmp && *tmp) {
+ VIR_FREE(*tmp);
+ tmp++;
+ }
+ VIR_FREE(data->access_drivers);
VIR_FREE(data->unix_sock_ro_perms);
VIR_FREE(data->unix_sock_rw_perms);
@@ -379,6 +385,10 @@ daemonConfigLoadOptions(struct daemonConfig *data,
if (remoteConfigGetAuth(conf, "auth_tls", &data->auth_tls, filename) < 0)
goto error;
+ if (remoteConfigGetStringList(conf, "access_drivers",
+ &data->access_drivers, filename) < 0)
+ goto error;
+
GET_CONF_STR(conf, filename, unix_sock_group);
GET_CONF_STR(conf, filename, unix_sock_ro_perms);
GET_CONF_STR(conf, filename, unix_sock_rw_perms);
diff --git a/daemon/libvirtd-config.h b/daemon/libvirtd-config.h
index 07118de40..973e0eab7 100644
--- a/daemon/libvirtd-config.h
+++ b/daemon/libvirtd-config.h
@@ -45,6 +45,8 @@ struct daemonConfig {
int auth_tcp;
int auth_tls;
+ char **access_drivers;
+
int mdns_adv;
char *mdns_name;
diff --git a/daemon/libvirtd.8.in b/daemon/libvirtd.8.in
index 303eba80d..47483f593 100644
--- a/daemon/libvirtd.8.in
+++ b/daemon/libvirtd.8.in
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "LIBVIRTD 8"
-.TH LIBVIRTD 8 "2012-08-15" "libvirt-1.0.6" "Virtualization Support"
+.TH LIBVIRTD 8 "2012-08-15" "libvirt-1.1.0" "Virtualization Support"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/daemon/libvirtd.aug b/daemon/libvirtd.aug
index f32b3a139..7c56a4111 100644
--- a/daemon/libvirtd.aug
+++ b/daemon/libvirtd.aug
@@ -51,6 +51,7 @@ module Libvirtd =
| bool_entry "tls_no_sanity_certificate"
| str_array_entry "tls_allowed_dn_list"
| str_array_entry "sasl_allowed_username_list"
+ | str_array_entry "access_drivers"
let processing_entry = int_entry "min_workers"
| int_entry "max_workers"
diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
index ae6a15c7b..3db4f1cdf 100644
--- a/daemon/libvirtd.c
+++ b/daemon/libvirtd.c
@@ -52,8 +52,9 @@
#include "remote.h"
#include "virhook.h"
#include "viraudit.h"
-#include "locking/lock_manager.h"
#include "virstring.h"
+#include "locking/lock_manager.h"
+#include "viraccessmanager.h"
#ifdef WITH_DRIVER_MODULES
# include "driver.h"
@@ -728,6 +729,26 @@ error:
}
+static int
+daemonSetupAccessManager(struct daemonConfig *config)
+{
+ virAccessManagerPtr mgr;
+ const char *none[] = { "none", NULL };
+ const char **driver = (const char **)config->access_drivers;
+
+ if (!driver ||
+ !driver[0])
+ driver = none;
+
+ if (!(mgr = virAccessManagerNewStack(driver)))
+ return -1;
+
+ virAccessManagerSetDefault(mgr);
+ virObjectUnref(mgr);
+ return 0;
+}
+
+
/* Display version information. */
static void
daemonVersion(const char *argv0)
@@ -872,6 +893,9 @@ handleSystemMessageFunc(DBusConnection *connection ATTRIBUTE_UNUSED,
static void daemonRunStateInit(void *opaque)
{
virNetServerPtr srv = opaque;
+ virIdentityPtr sysident = virIdentityGetSystem();
+
+ virIdentitySetCurrent(sysident);
/* Since driver initialization can take time inhibit daemon shutdown until
we're done so clients get a chance to connect */
@@ -914,6 +938,8 @@ static void daemonRunStateInit(void *opaque)
cleanup:
daemonInhibitCallback(false, srv);
virObjectUnref(srv);
+ virObjectUnref(sysident);
+ virIdentitySetCurrent(NULL);
}
static int daemonStateInit(virNetServerPtr srv)
@@ -1260,6 +1286,11 @@ int main(int argc, char **argv) {
exit(EXIT_FAILURE);
}
+ if (daemonSetupAccessManager(config) < 0) {
+ VIR_ERROR(_("Can't initialize access manager"));
+ exit(EXIT_FAILURE);
+ }
+
if (!pid_file &&
daemonPidFilePath(privileged,
&pid_file) < 0) {
diff --git a/daemon/libvirtd.conf b/daemon/libvirtd.conf
index 47da5208e..af4493e63 100644
--- a/daemon/libvirtd.conf
+++ b/daemon/libvirtd.conf
@@ -155,6 +155,15 @@
#auth_tls = "none"
+# Change the API access control scheme
+#
+# By default an authenticated user is allowed access
+# to all APIs. Access drivers can place restrictions
+# on this. By default the 'nop' driver is enabled,
+# meaning no access control checks are done once a
+# client has authenticated with libvirtd
+#
+#access_drivers = [ "polkit" ]
#################################################################
#
diff --git a/daemon/libvirtd.h b/daemon/libvirtd.h
index c07637a29..d0afdc8e5 100644
--- a/daemon/libvirtd.h
+++ b/daemon/libvirtd.h
@@ -1,7 +1,7 @@
/*
* libvirtd.h: daemon data structure definitions
*
- * Copyright (C) 2006-2012 Red Hat, Inc.
+ * Copyright (C) 2006-2013 Red Hat, Inc.
* Copyright (C) 2006 Daniel P. Berrange
*
* This library is free software; you can redistribute it and/or
@@ -27,8 +27,6 @@
# define VIR_ENUM_SENTINELS
-# include <config.h>
-
# include <rpc/types.h>
# include <rpc/xdr.h>
# include "remote_protocol.h"
diff --git a/daemon/remote.c b/daemon/remote.c
index 47267c207..cb362dad1 100644
--- a/daemon/remote.c
+++ b/daemon/remote.c
@@ -885,7 +885,7 @@ remoteDeserializeTypedParameters(remote_typed_param *args_params_val,
virTypedParameterPtr params = NULL;
/* Check the length of the returned list carefully. */
- if (args_params_len > limit) {
+ if (limit && args_params_len > limit) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
goto cleanup;
}
@@ -4677,6 +4677,335 @@ cleanup:
return rv;
}
+static int
+remoteDispatchDomainMigrateBegin3Params(
+ virNetServerPtr server ATTRIBUTE_UNUSED,
+ virNetServerClientPtr client ATTRIBUTE_UNUSED,
+ virNetMessagePtr msg ATTRIBUTE_UNUSED,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_begin3_params_args *args,
+ remote_domain_migrate_begin3_params_ret *ret)
+{
+ char *xml = NULL;
+ virDomainPtr dom = NULL;
+ virTypedParameterPtr params = NULL;
+ int nparams = 0;
+ char *cookieout = NULL;
+ int cookieoutlen = 0;
+ int rv = -1;
+ 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 (!(params = remoteDeserializeTypedParameters(args->params.params_val,
+ args->params.params_len,
+ 0, &nparams)))
+ goto cleanup;
+
+ if (!(xml = virDomainMigrateBegin3Params(dom, params, nparams,
+ &cookieout, &cookieoutlen,
+ args->flags)))
+ goto cleanup;
+
+ ret->cookie_out.cookie_out_len = cookieoutlen;
+ ret->cookie_out.cookie_out_val = cookieout;
+ ret->xml = xml;
+
+ rv = 0;
+
+cleanup:
+ virTypedParamsFree(params, nparams);
+ if (rv < 0)
+ virNetMessageSaveError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
+
+static int
+remoteDispatchDomainMigratePrepare3Params(
+ virNetServerPtr server ATTRIBUTE_UNUSED,
+ virNetServerClientPtr client ATTRIBUTE_UNUSED,
+ virNetMessagePtr msg ATTRIBUTE_UNUSED,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_prepare3_params_args *args,
+ remote_domain_migrate_prepare3_params_ret *ret)
+{
+ virTypedParameterPtr params = NULL;
+ int nparams = 0;
+ char *cookieout = NULL;
+ int cookieoutlen = 0;
+ char **uri_out;
+ int rv = -1;
+ struct daemonClientPrivate *priv =
+ virNetServerClientGetPrivateData(client);
+
+ if (!priv->conn) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(params = remoteDeserializeTypedParameters(args->params.params_val,
+ args->params.params_len,
+ 0, &nparams)))
+ goto cleanup;
+
+ /* Wacky world of XDR ... */
+ if (VIR_ALLOC(uri_out) < 0) {
+ virReportOOMError();
+ goto cleanup;
+ }
+
+ if (virDomainMigratePrepare3Params(priv->conn, params, nparams,
+ args->cookie_in.cookie_in_val,
+ args->cookie_in.cookie_in_len,
+ &cookieout, &cookieoutlen,
+ uri_out, args->flags) < 0)
+ goto cleanup;
+
+ ret->cookie_out.cookie_out_len = cookieoutlen;
+ ret->cookie_out.cookie_out_val = cookieout;
+ ret->uri_out = !*uri_out ? NULL : uri_out;
+
+ rv = 0;
+
+cleanup:
+ virTypedParamsFree(params, nparams);
+ if (rv < 0) {
+ virNetMessageSaveError(rerr);
+ VIR_FREE(uri_out);
+ }
+ return rv;
+}
+
+static int
+remoteDispatchDomainMigratePrepareTunnel3Params(
+ virNetServerPtr server ATTRIBUTE_UNUSED,
+ virNetServerClientPtr client,
+ virNetMessagePtr msg,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_prepare_tunnel3_params_args *args,
+ remote_domain_migrate_prepare_tunnel3_params_ret *ret)
+{
+ virTypedParameterPtr params = NULL;
+ int nparams = 0;
+ char *cookieout = NULL;
+ int cookieoutlen = 0;
+ int rv = -1;
+ struct daemonClientPrivate *priv =
+ virNetServerClientGetPrivateData(client);
+ virStreamPtr st = NULL;
+ daemonClientStreamPtr stream = NULL;
+
+ if (!priv->conn) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(params = remoteDeserializeTypedParameters(args->params.params_val,
+ args->params.params_len,
+ 0, &nparams)))
+ goto cleanup;
+
+ if (!(st = virStreamNew(priv->conn, VIR_STREAM_NONBLOCK)) ||
+ !(stream = daemonCreateClientStream(client, st, remoteProgram,
+ &msg->header)))
+ goto cleanup;
+
+ if (virDomainMigratePrepareTunnel3Params(priv->conn, st, params, nparams,
+ args->cookie_in.cookie_in_val,
+ args->cookie_in.cookie_in_len,
+ &cookieout, &cookieoutlen,
+ args->flags) < 0)
+ goto cleanup;
+
+ if (daemonAddClientStream(client, stream, false) < 0)
+ goto cleanup;
+
+ ret->cookie_out.cookie_out_val = cookieout;
+ ret->cookie_out.cookie_out_len = cookieoutlen;
+ rv = 0;
+
+cleanup:
+ virTypedParamsFree(params, nparams);
+ if (rv < 0) {
+ virNetMessageSaveError(rerr);
+ VIR_FREE(cookieout);
+ if (stream) {
+ virStreamAbort(st);
+ daemonFreeClientStream(client, stream);
+ } else {
+ virStreamFree(st);
+ }
+ }
+ return rv;
+}
+
+
+static int
+remoteDispatchDomainMigratePerform3Params(
+ virNetServerPtr server ATTRIBUTE_UNUSED,
+ virNetServerClientPtr client ATTRIBUTE_UNUSED,
+ virNetMessagePtr msg ATTRIBUTE_UNUSED,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_perform3_params_args *args,
+ remote_domain_migrate_perform3_params_ret *ret)
+{
+ virTypedParameterPtr params = NULL;
+ int nparams = 0;
+ virDomainPtr dom = NULL;
+ char *cookieout = NULL;
+ int cookieoutlen = 0;
+ char *dconnuri;
+ int rv = -1;
+ 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 (!(params = remoteDeserializeTypedParameters(args->params.params_val,
+ args->params.params_len,
+ 0, &nparams)))
+ goto cleanup;
+
+ dconnuri = args->dconnuri == NULL ? NULL : *args->dconnuri;
+
+ if (virDomainMigratePerform3Params(dom, dconnuri, params, nparams,
+ args->cookie_in.cookie_in_val,
+ args->cookie_in.cookie_in_len,
+ &cookieout, &cookieoutlen,
+ args->flags) < 0)
+ goto cleanup;
+
+ ret->cookie_out.cookie_out_len = cookieoutlen;
+ ret->cookie_out.cookie_out_val = cookieout;
+
+ rv = 0;
+
+cleanup:
+ virTypedParamsFree(params, nparams);
+ if (rv < 0)
+ virNetMessageSaveError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
+
+
+static int
+remoteDispatchDomainMigrateFinish3Params(
+ virNetServerPtr server ATTRIBUTE_UNUSED,
+ virNetServerClientPtr client ATTRIBUTE_UNUSED,
+ virNetMessagePtr msg ATTRIBUTE_UNUSED,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_finish3_params_args *args,
+ remote_domain_migrate_finish3_params_ret *ret)
+{
+ virTypedParameterPtr params = NULL;
+ int nparams = 0;
+ virDomainPtr dom = NULL;
+ char *cookieout = NULL;
+ int cookieoutlen = 0;
+ int rv = -1;
+ struct daemonClientPrivate *priv =
+ virNetServerClientGetPrivateData(client);
+
+ if (!priv->conn) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(params = remoteDeserializeTypedParameters(args->params.params_val,
+ args->params.params_len,
+ 0, &nparams)))
+ goto cleanup;
+
+ dom = virDomainMigrateFinish3Params(priv->conn, params, nparams,
+ args->cookie_in.cookie_in_val,
+ args->cookie_in.cookie_in_len,
+ &cookieout, &cookieoutlen,
+ args->flags, args->cancelled);
+ if (!dom)
+ goto cleanup;
+
+ make_nonnull_domain(&ret->dom, dom);
+
+ ret->cookie_out.cookie_out_len = cookieoutlen;
+ ret->cookie_out.cookie_out_val = cookieout;
+
+ rv = 0;
+
+cleanup:
+ virTypedParamsFree(params, nparams);
+ if (rv < 0) {
+ virNetMessageSaveError(rerr);
+ VIR_FREE(cookieout);
+ }
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
+
+
+static int
+remoteDispatchDomainMigrateConfirm3Params(
+ virNetServerPtr server ATTRIBUTE_UNUSED,
+ virNetServerClientPtr client ATTRIBUTE_UNUSED,
+ virNetMessagePtr msg ATTRIBUTE_UNUSED,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_confirm3_params_args *args)
+{
+ virTypedParameterPtr params = NULL;
+ int nparams = 0;
+ virDomainPtr dom = NULL;
+ int rv = -1;
+ 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 (!(params = remoteDeserializeTypedParameters(args->params.params_val,
+ args->params.params_len,
+ 0, &nparams)))
+ goto cleanup;
+
+ if (virDomainMigrateConfirm3Params(dom, params, nparams,
+ args->cookie_in.cookie_in_val,
+ args->cookie_in.cookie_in_len,
+ args->flags, args->cancelled) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ virTypedParamsFree(params, nparams);
+ if (rv < 0)
+ virNetMessageSaveError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
+
+
/*----- Helpers. -----*/
/* get_nonnull_domain and get_nonnull_network turn an on-wire
diff --git a/daemon/remote_dispatch.h b/daemon/remote_dispatch.h
index 1be242df8..d58e8dcb2 100644
--- a/daemon/remote_dispatch.h
+++ b/daemon/remote_dispatch.h
@@ -5175,6 +5175,28 @@ static int remoteDispatchDomainMigrateBegin3Helper(
+static int remoteDispatchDomainMigrateBegin3Params(
+ virNetServerPtr server,
+ virNetServerClientPtr client,
+ virNetMessagePtr msg,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_begin3_params_args *args,
+ remote_domain_migrate_begin3_params_ret *ret);
+static int remoteDispatchDomainMigrateBegin3ParamsHelper(
+ 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 remoteDispatchDomainMigrateBegin3Params(server, client, msg, rerr, args, ret);
+}
+/* remoteDispatchDomainMigrateBegin3Params body has to be implemented manually */
+
+
+
static int remoteDispatchDomainMigrateConfirm3(
virNetServerPtr server,
virNetServerClientPtr client,
@@ -5196,6 +5218,27 @@ static int remoteDispatchDomainMigrateConfirm3Helper(
+static int remoteDispatchDomainMigrateConfirm3Params(
+ virNetServerPtr server,
+ virNetServerClientPtr client,
+ virNetMessagePtr msg,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_confirm3_params_args *args);
+static int remoteDispatchDomainMigrateConfirm3ParamsHelper(
+ 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 remoteDispatchDomainMigrateConfirm3Params(server, client, msg, rerr, args);
+}
+/* remoteDispatchDomainMigrateConfirm3Params body has to be implemented manually */
+
+
+
static int remoteDispatchDomainMigrateFinish(
virNetServerPtr server,
virNetServerClientPtr client,
@@ -5328,6 +5371,28 @@ static int remoteDispatchDomainMigrateFinish3Helper(
+static int remoteDispatchDomainMigrateFinish3Params(
+ virNetServerPtr server,
+ virNetServerClientPtr client,
+ virNetMessagePtr msg,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_finish3_params_args *args,
+ remote_domain_migrate_finish3_params_ret *ret);
+static int remoteDispatchDomainMigrateFinish3ParamsHelper(
+ 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 remoteDispatchDomainMigrateFinish3Params(server, client, msg, rerr, args, ret);
+}
+/* remoteDispatchDomainMigrateFinish3Params body has to be implemented manually */
+
+
+
static int remoteDispatchDomainMigrateGetCompressionCache(
virNetServerPtr server,
virNetServerClientPtr client,
@@ -5523,6 +5588,28 @@ static int remoteDispatchDomainMigratePerform3Helper(
+static int remoteDispatchDomainMigratePerform3Params(
+ virNetServerPtr server,
+ virNetServerClientPtr client,
+ virNetMessagePtr msg,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_perform3_params_args *args,
+ remote_domain_migrate_perform3_params_ret *ret);
+static int remoteDispatchDomainMigratePerform3ParamsHelper(
+ 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 remoteDispatchDomainMigratePerform3Params(server, client, msg, rerr, args, ret);
+}
+/* remoteDispatchDomainMigratePerform3Params body has to be implemented manually */
+
+
+
static int remoteDispatchDomainMigratePrepare(
virNetServerPtr server,
virNetServerClientPtr client,
@@ -5589,6 +5676,28 @@ static int remoteDispatchDomainMigratePrepare3Helper(
+static int remoteDispatchDomainMigratePrepare3Params(
+ virNetServerPtr server,
+ virNetServerClientPtr client,
+ virNetMessagePtr msg,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_prepare3_params_args *args,
+ remote_domain_migrate_prepare3_params_ret *ret);
+static int remoteDispatchDomainMigratePrepare3ParamsHelper(
+ 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 remoteDispatchDomainMigratePrepare3Params(server, client, msg, rerr, args, ret);
+}
+/* remoteDispatchDomainMigratePrepare3Params body has to be implemented manually */
+
+
+
static int remoteDispatchDomainMigratePrepareTunnel(
virNetServerPtr server,
virNetServerClientPtr client,
@@ -5742,6 +5851,28 @@ cleanup:
+static int remoteDispatchDomainMigratePrepareTunnel3Params(
+ virNetServerPtr server,
+ virNetServerClientPtr client,
+ virNetMessagePtr msg,
+ virNetMessageErrorPtr rerr,
+ remote_domain_migrate_prepare_tunnel3_params_args *args,
+ remote_domain_migrate_prepare_tunnel3_params_ret *ret);
+static int remoteDispatchDomainMigratePrepareTunnel3ParamsHelper(
+ 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 remoteDispatchDomainMigratePrepareTunnel3Params(server, client, msg, rerr, args, ret);
+}
+/* remoteDispatchDomainMigratePrepareTunnel3Params body has to be implemented manually */
+
+
+
static int remoteDispatchDomainMigrateSetCompressionCache(
virNetServerPtr server,
virNetServerClientPtr client,
@@ -16499,5 +16630,59 @@ virNetServerProgramProc remoteProcs[] = {
true,
0
},
+{ /* Method DomainMigrateBegin3Params => 302 */
+ remoteDispatchDomainMigrateBegin3ParamsHelper,
+ sizeof(remote_domain_migrate_begin3_params_args),
+ (xdrproc_t)xdr_remote_domain_migrate_begin3_params_args,
+ sizeof(remote_domain_migrate_begin3_params_ret),
+ (xdrproc_t)xdr_remote_domain_migrate_begin3_params_ret,
+ true,
+ 0
+},
+{ /* Method DomainMigratePrepare3Params => 303 */
+ remoteDispatchDomainMigratePrepare3ParamsHelper,
+ sizeof(remote_domain_migrate_prepare3_params_args),
+ (xdrproc_t)xdr_remote_domain_migrate_prepare3_params_args,
+ sizeof(remote_domain_migrate_prepare3_params_ret),
+ (xdrproc_t)xdr_remote_domain_migrate_prepare3_params_ret,
+ true,
+ 0
+},
+{ /* Method DomainMigratePrepareTunnel3Params => 304 */
+ remoteDispatchDomainMigratePrepareTunnel3ParamsHelper,
+ sizeof(remote_domain_migrate_prepare_tunnel3_params_args),
+ (xdrproc_t)xdr_remote_domain_migrate_prepare_tunnel3_params_args,
+ sizeof(remote_domain_migrate_prepare_tunnel3_params_ret),
+ (xdrproc_t)xdr_remote_domain_migrate_prepare_tunnel3_params_ret,
+ true,
+ 0
+},
+{ /* Method DomainMigratePerform3Params => 305 */
+ remoteDispatchDomainMigratePerform3ParamsHelper,
+ sizeof(remote_domain_migrate_perform3_params_args),
+ (xdrproc_t)xdr_remote_domain_migrate_perform3_params_args,
+ sizeof(remote_domain_migrate_perform3_params_ret),
+ (xdrproc_t)xdr_remote_domain_migrate_perform3_params_ret,
+ true,
+ 0
+},
+{ /* Method DomainMigrateFinish3Params => 306 */
+ remoteDispatchDomainMigrateFinish3ParamsHelper,
+ sizeof(remote_domain_migrate_finish3_params_args),
+ (xdrproc_t)xdr_remote_domain_migrate_finish3_params_args,
+ sizeof(remote_domain_migrate_finish3_params_ret),
+ (xdrproc_t)xdr_remote_domain_migrate_finish3_params_ret,
+ true,
+ 0
+},
+{ /* Method DomainMigrateConfirm3Params => 307 */
+ remoteDispatchDomainMigrateConfirm3ParamsHelper,
+ sizeof(remote_domain_migrate_confirm3_params_args),
+ (xdrproc_t)xdr_remote_domain_migrate_confirm3_params_args,
+ 0,
+ (xdrproc_t)xdr_void,
+ true,
+ 0
+},
};
size_t remoteNProcs = ARRAY_CARDINALITY(remoteProcs);
diff --git a/daemon/test_libvirtd.aug.in b/daemon/test_libvirtd.aug.in
index 455b74a19..4e3b8789f 100644
--- a/daemon/test_libvirtd.aug.in
+++ b/daemon/test_libvirtd.aug.in
@@ -17,6 +17,9 @@ module Test_libvirtd =
{ "auth_unix_rw" = "none" }
{ "auth_tcp" = "sasl" }
{ "auth_tls" = "none" }
+ { "access_drivers"
+ { "1" = "polkit" }
+ }
{ "key_file" = "/etc/pki/libvirt/private/serverkey.pem" }
{ "cert_file" = "/etc/pki/libvirt/servercert.pem" }
{ "ca_file" = "/etc/pki/CA/cacert.pem" }