diff options
author | Guido Günther <agx@sigxcpu.org> | 2013-07-01 23:27:12 +0200 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2013-07-01 23:27:12 +0200 |
commit | 985164b3f9a6e58010385eb5fb3cdbc9d8565468 (patch) | |
tree | e53c02caca01bf243fd83c35728d0d96d82a0c7b /daemon | |
parent | 3a2c75c79b9650a7a8ecf0f80fc8caaf68d2693d (diff) |
New upstream version 1.1.0
Diffstat (limited to 'daemon')
-rw-r--r-- | daemon/Makefile.am | 1 | ||||
-rw-r--r-- | daemon/Makefile.in | 2 | ||||
-rw-r--r-- | daemon/libvirtd-config.c | 12 | ||||
-rw-r--r-- | daemon/libvirtd-config.h | 2 | ||||
-rw-r--r-- | daemon/libvirtd.8.in | 2 | ||||
-rw-r--r-- | daemon/libvirtd.aug | 1 | ||||
-rw-r--r-- | daemon/libvirtd.c | 33 | ||||
-rw-r--r-- | daemon/libvirtd.conf | 9 | ||||
-rw-r--r-- | daemon/libvirtd.h | 4 | ||||
-rw-r--r-- | daemon/remote.c | 331 | ||||
-rw-r--r-- | daemon/remote_dispatch.h | 185 | ||||
-rw-r--r-- | daemon/test_libvirtd.aug.in | 3 |
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" } |