/* -*- c -*-
* remote_protocol.x: private protocol for communicating between
* remote_internal driver and libvirtd. This protocol is
* internal and may change at any time.
*
* Copyright (C) 2006-2015 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* .
*
* Author: Richard Jones
*/
/* Notes:
*
* (1) The protocol is internal and may change at any time, without
* notice. Do not use it. Instead link to libvirt and use the remote
* driver.
*
* (2) See bottom of this file for a description of the home-brew RPC.
*
* (3) Authentication/encryption is done outside this protocol.
*
* (4) For namespace reasons, all exported names begin 'remote_' or
* 'REMOTE_'. This makes names quite long.
*/
%#include
%#include "internal.h"
%#include
/* cygwin's xdr implementation defines xdr_u_int64_t instead of xdr_uint64_t
* and lacks IXDR_PUT_INT32 and IXDR_GET_INT32
*/
%#ifdef HAVE_XDR_U_INT64_T
%# define xdr_uint64_t xdr_u_int64_t
%#endif
%#ifndef IXDR_PUT_INT32
%# define IXDR_PUT_INT32 IXDR_PUT_LONG
%#endif
%#ifndef IXDR_GET_INT32
%# define IXDR_GET_INT32 IXDR_GET_LONG
%#endif
%#ifndef IXDR_PUT_U_INT32
%# define IXDR_PUT_U_INT32 IXDR_PUT_U_LONG
%#endif
%#ifndef IXDR_GET_U_INT32
%# define IXDR_GET_U_INT32 IXDR_GET_U_LONG
%#endif
/*----- Data types. -----*/
/* Length of long, but not unbounded, strings.
* This is an arbitrary limit designed to stop the decoder from trying
* to allocate unbounded amounts of memory when fed with a bad message.
*/
const REMOTE_STRING_MAX = 4194304;
/* A long string, which may NOT be NULL. */
typedef string remote_nonnull_string;
/* A long string, which may be NULL. */
typedef remote_nonnull_string *remote_string;
/* Upper limit on lists of domains. */
const REMOTE_DOMAIN_LIST_MAX = 16384;
/* Upper limit on cpumap (bytes) passed to virDomainPinVcpu. */
const REMOTE_CPUMAP_MAX = 2048;
/* Upper limit on number of info fields returned by virDomainGetVcpus. */
const REMOTE_VCPUINFO_MAX = 16384;
/* Upper limit on cpumaps (bytes) passed to virDomainGetVcpus. */
const REMOTE_CPUMAPS_MAX = 8388608;
/* Upper limit on number of info fields returned by virDomainGetIOThreads. */
const REMOTE_IOTHREADS_INFO_MAX = 16384;
/* Upper limit on migrate cookie. */
const REMOTE_MIGRATE_COOKIE_MAX = 4194304;
/* Upper limit on lists of networks. */
const REMOTE_NETWORK_LIST_MAX = 16384;
/* Upper limit on lists of interfaces. */
const REMOTE_INTERFACE_LIST_MAX = 16384;
/* Upper limit on lists of storage pools. */
const REMOTE_STORAGE_POOL_LIST_MAX = 4096;
/* Upper limit on lists of storage vols. */
const REMOTE_STORAGE_VOL_LIST_MAX = 16384;
/* Upper limit on lists of node devices. */
const REMOTE_NODE_DEVICE_LIST_MAX = 16384;
/* Upper limit on lists of node device capabilities. */
const REMOTE_NODE_DEVICE_CAPS_LIST_MAX = 65536;
/* Upper limit on lists of network filters. */
const REMOTE_NWFILTER_LIST_MAX = 1024;
/* Upper limit on list of scheduler parameters. */
const REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX = 16;
/* Upper limit on list of blkio parameters. */
const REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX = 16;
/* Upper limit on list of memory parameters. */
const REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX = 16;
/* Upper limit on list of blockio tuning parameters. */
const REMOTE_DOMAIN_BLOCK_IO_TUNE_PARAMETERS_MAX = 16;
/* Upper limit on list of numa parameters. */
const REMOTE_DOMAIN_NUMA_PARAMETERS_MAX = 16;
/* Upper limit on block copy tunable parameters. */
const REMOTE_DOMAIN_BLOCK_COPY_PARAMETERS_MAX = 16;
/* Upper limit on list of node cpu stats. */
const REMOTE_NODE_CPU_STATS_MAX = 16;
/* Upper limit on list of node memory stats. */
const REMOTE_NODE_MEMORY_STATS_MAX = 16;
/* Upper limit on list of block stats. */
const REMOTE_DOMAIN_BLOCK_STATS_PARAMETERS_MAX = 16;
/* Upper limit on number of NUMA cells */
const REMOTE_NODE_MAX_CELLS = 1024;
/* Upper limit on SASL auth negotiation packet */
const REMOTE_AUTH_SASL_DATA_MAX = 65536;
/* Maximum number of auth types */
const REMOTE_AUTH_TYPE_LIST_MAX = 20;
/* Upper limit on list of memory stats */
const REMOTE_DOMAIN_MEMORY_STATS_MAX = 1024;
/* Upper limit on lists of domain snapshots. */
const REMOTE_DOMAIN_SNAPSHOT_LIST_MAX = 1024;
/* Maximum length of a block peek buffer message.
* Note applications need to be aware of this limit and issue multiple
* requests for large amounts of data.
*/
const REMOTE_DOMAIN_BLOCK_PEEK_BUFFER_MAX = 4194304;
/* Maximum length of a memory peek buffer message.
* Note applications need to be aware of this limit and issue multiple
* requests for large amounts of data.
*/
const REMOTE_DOMAIN_MEMORY_PEEK_BUFFER_MAX = 4194304;
/*
* Maximum length of a security label list.
*/
const REMOTE_SECURITY_LABEL_LIST_MAX=64;
/*
* Maximum length of a security model field.
*/
const REMOTE_SECURITY_MODEL_MAX = VIR_SECURITY_MODEL_BUFLEN;
/*
* Maximum length of a security label field.
*/
const REMOTE_SECURITY_LABEL_MAX = VIR_SECURITY_LABEL_BUFLEN;
/*
* Maximum length of a security DOI field.
*/
const REMOTE_SECURITY_DOI_MAX = VIR_SECURITY_DOI_BUFLEN;
/*
* Maximum size of a secret value.
*/
const REMOTE_SECRET_VALUE_MAX = 65536;
/*
* Upper limit on list of secrets.
*/
const REMOTE_SECRET_LIST_MAX = 16384;
/*
* Upper limit on list of CPUs accepted when computing a baseline CPU.
*/
const REMOTE_CPU_BASELINE_MAX = 256;
/*
* Max number of sending keycodes.
*/
const REMOTE_DOMAIN_SEND_KEY_MAX = 16;
/*
* Upper limit on list of interface parameters
*/
const REMOTE_DOMAIN_INTERFACE_PARAMETERS_MAX = 16;
/*
* Upper limit on cpus involved in per-cpu stats
*/
const REMOTE_DOMAIN_GET_CPU_STATS_NCPUS_MAX = 128;
/*
* Upper limit on list of per-cpu stats:
* REMOTE_NODE_CPU_STATS_MAX * REMOTE_DOMAIN_GET_CPU_STATS_MAX
*/
const REMOTE_DOMAIN_GET_CPU_STATS_MAX = 2048;
/*
* Upper limit on number of disks with errors
*/
const REMOTE_DOMAIN_DISK_ERRORS_MAX = 256;
/*
* Upper limit on number of memory parameters
*/
const REMOTE_NODE_MEMORY_PARAMETERS_MAX = 64;
/* Upper limit on migrate parameters */
const REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX = 64;
/* Upper limit on number of job stats */
const REMOTE_DOMAIN_JOB_STATS_MAX = 64;
/* Upper limit on number of CPU models */
const REMOTE_CONNECT_CPU_MODELS_MAX = 8192;
/* Upper limit on number of mountpoints to frozen */
const REMOTE_DOMAIN_FSFREEZE_MOUNTPOINTS_MAX = 256;
/* Upper limit on the maximum number of leases in one lease file */
const REMOTE_NETWORK_DHCP_LEASES_MAX = 65536;
/* Upper limit on count of parameters returned via bulk stats API */
const REMOTE_CONNECT_GET_ALL_DOMAIN_STATS_MAX = 4096;
/* Upper limit of message size for tunable event. */
const REMOTE_DOMAIN_EVENT_TUNABLE_MAX = 2048;
/* Upper limit on number of mountpoints in fsinfo */
const REMOTE_DOMAIN_FSINFO_MAX = 256;
/* Upper limit on number of disks per mountpoint in fsinfo */
const REMOTE_DOMAIN_FSINFO_DISKS_MAX = 256;
/* UUID. VIR_UUID_BUFLEN definition comes from libvirt.h */
typedef opaque remote_uuid[VIR_UUID_BUFLEN];
/* A domain which may not be NULL. */
struct remote_nonnull_domain {
remote_nonnull_string name;
remote_uuid uuid;
int id;
};
/* A network which may not be NULL. */
struct remote_nonnull_network {
remote_nonnull_string name;
remote_uuid uuid;
};
/* A network filter which may not be NULL. */
struct remote_nonnull_nwfilter {
remote_nonnull_string name;
remote_uuid uuid;
};
/* An interface which may not be NULL. */
struct remote_nonnull_interface {
remote_nonnull_string name;
remote_nonnull_string mac;
};
/* A storage pool which may not be NULL. */
struct remote_nonnull_storage_pool {
remote_nonnull_string name;
remote_uuid uuid;
};
/* A storage vol which may not be NULL. */
struct remote_nonnull_storage_vol {
remote_nonnull_string pool;
remote_nonnull_string name;
remote_nonnull_string key;
};
/* A node device which may not be NULL. */
struct remote_nonnull_node_device {
remote_nonnull_string name;
};
/* A secret which may not be null. */
struct remote_nonnull_secret {
remote_uuid uuid;
int usageType;
remote_nonnull_string usageID;
};
/* A snapshot which may not be NULL. */
struct remote_nonnull_domain_snapshot {
remote_nonnull_string name;
remote_nonnull_domain dom;
};
/* A domain or network which may be NULL. */
typedef remote_nonnull_domain *remote_domain;
typedef remote_nonnull_network *remote_network;
typedef remote_nonnull_nwfilter *remote_nwfilter;
typedef remote_nonnull_storage_pool *remote_storage_pool;
typedef remote_nonnull_storage_vol *remote_storage_vol;
typedef remote_nonnull_node_device *remote_node_device;
/* Error message. See for explanation of fields. */
/* NB. Fields "code", "domain" and "level" are really enums. The
* numeric value should remain compatible between libvirt and
* libvirtd. This means, no changing or reordering the enums as
* defined in (but we don't do that anyway, for separate
* ABI reasons).
*/
struct remote_error {
int code;
int domain;
remote_string message;
int level;
remote_domain dom;
remote_string str1;
remote_string str2;
remote_string str3;
int int1;
int int2;
remote_network net;
};
/* Authentication types available thus far.... */
enum remote_auth_type {
REMOTE_AUTH_NONE = 0,
REMOTE_AUTH_SASL = 1,
REMOTE_AUTH_POLKIT = 2
};
/* Wire encoding of virVcpuInfo. */
struct remote_vcpu_info {
unsigned int number;
int state;
unsigned hyper cpu_time;
int cpu;
};
/* Wire encoding of virTypedParameter.
* Note the enum (type) which must remain binary compatible.
*/
union remote_typed_param_value switch (int type) {
case VIR_TYPED_PARAM_INT:
int i;
case VIR_TYPED_PARAM_UINT:
unsigned int ui;
case VIR_TYPED_PARAM_LLONG:
hyper l;
case VIR_TYPED_PARAM_ULLONG:
unsigned hyper ul;
case VIR_TYPED_PARAM_DOUBLE:
double d;
case VIR_TYPED_PARAM_BOOLEAN:
int b;
case VIR_TYPED_PARAM_STRING:
remote_nonnull_string s;
};
struct remote_typed_param {
remote_nonnull_string field;
remote_typed_param_value value;
};
struct remote_node_get_cpu_stats {
remote_nonnull_string field;
unsigned hyper value;
};
struct remote_node_get_memory_stats {
remote_nonnull_string field;
unsigned hyper value;
};
struct remote_domain_disk_error {
remote_nonnull_string disk;
int error;
};
/*----- Calls. -----*/
/* For each call we may have a 'remote_CALL_args' and 'remote_CALL_ret'
* type. These are omitted when they are void. The virConnectPtr
* is not passed at all (it is inferred on the remote server from the
* connection). Errors are returned implicitly in the RPC protocol.
*
* Please follow the naming convention carefully - this file is
* parsed by 'gendispatch.pl'.
*
* 'remote_CALL_ret' members that are filled via call-by-reference must be
* annotated with a insert@ comment to indicate the offset in the
* parameter list of the function to be called.
*
* If the 'remote_CALL_ret' maps to a struct in the public API then it is
* also filled via call-by-reference and must be annotated with a
* insert@ comment to indicate the offset in the parameter list of
* the function to be called.
*
* Dynamic opaque and remote_nonnull_string arrays can be annotated with an
* optional typecast */
struct remote_connect_open_args {
/* NB. "name" might be NULL although in practice you can't
* yet do that using the remote_internal driver.
*/
remote_string name;
unsigned int flags;
};
struct remote_connect_supports_feature_args {
int feature;
};
struct remote_connect_supports_feature_ret {
int supported;
};
struct remote_connect_get_type_ret {
remote_nonnull_string type;
};
struct remote_connect_get_version_ret {
unsigned hyper hv_ver;
};
struct remote_connect_get_lib_version_ret {
unsigned hyper lib_ver;
};
struct remote_connect_get_hostname_ret {
remote_nonnull_string hostname;
};
struct remote_connect_get_sysinfo_args {
unsigned int flags;
};
struct remote_connect_get_sysinfo_ret {
remote_nonnull_string sysinfo;
};
struct remote_connect_get_uri_ret {
remote_nonnull_string uri;
};
struct remote_connect_get_max_vcpus_args {
/* The only backend which supports this call is Xen HV, and
* there the type is ignored so it could be NULL.
*/
remote_string type;
};
struct remote_connect_get_max_vcpus_ret {
int max_vcpus;
};
struct remote_node_get_info_ret { /* insert@1 */
char model[32];
unsigned hyper memory;
int cpus;
int mhz;
int nodes;
int sockets;
int cores;
int threads;
};
struct remote_connect_get_capabilities_ret {
remote_nonnull_string capabilities;
};
struct remote_connect_get_domain_capabilities_args {
remote_string emulatorbin;
remote_string arch;
remote_string machine;
remote_string virttype;
unsigned int flags;
};
struct remote_connect_get_domain_capabilities_ret {
remote_nonnull_string capabilities;
};
struct remote_node_get_cpu_stats_args {
int cpuNum;
int nparams;
unsigned int flags;
};
struct remote_node_get_cpu_stats_ret {
remote_node_get_cpu_stats params;
int nparams;
};
struct remote_node_get_memory_stats_args {
int nparams;
int cellNum;
unsigned int flags;
};
struct remote_node_get_memory_stats_ret {
remote_node_get_memory_stats params;
int nparams;
};
struct remote_node_get_cells_free_memory_args {
int startCell;
int maxcells;
};
struct remote_node_get_cells_free_memory_ret {
unsigned hyper cells; /* insert@1 */
};
struct remote_node_get_free_memory_ret {
unsigned hyper freeMem;
};
struct remote_domain_get_scheduler_type_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_scheduler_type_ret {
remote_nonnull_string type;
int nparams;
};
struct remote_domain_get_scheduler_parameters_args {
remote_nonnull_domain dom;
int nparams; /* call-by-reference */
};
struct remote_domain_get_scheduler_parameters_ret {
remote_typed_param params; /* insert@1 */
};
struct remote_domain_get_scheduler_parameters_flags_args {
remote_nonnull_domain dom;
int nparams; /* call-by-reference */
unsigned int flags;
};
struct remote_domain_get_scheduler_parameters_flags_ret {
remote_typed_param params; /* insert@1 */
};
struct remote_domain_set_scheduler_parameters_args {
remote_nonnull_domain dom;
remote_typed_param params;
};
struct remote_domain_set_scheduler_parameters_flags_args {
remote_nonnull_domain dom;
remote_typed_param params;
unsigned int flags;
};
struct remote_domain_set_blkio_parameters_args {
remote_nonnull_domain dom;
remote_typed_param params;
unsigned int flags;
};
struct remote_domain_get_blkio_parameters_args {
remote_nonnull_domain dom;
int nparams;
unsigned int flags;
};
struct remote_domain_get_blkio_parameters_ret {
remote_typed_param params;
int nparams;
};
struct remote_domain_set_memory_parameters_args {
remote_nonnull_domain dom;
remote_typed_param params;
unsigned int flags;
};
struct remote_domain_get_memory_parameters_args {
remote_nonnull_domain dom;
int nparams;
unsigned int flags;
};
struct remote_domain_get_memory_parameters_ret {
remote_typed_param params;
int nparams;
};
struct remote_domain_block_resize_args {
remote_nonnull_domain dom;
remote_nonnull_string disk;
unsigned hyper size;
unsigned int flags;
};
struct remote_domain_set_numa_parameters_args {
remote_nonnull_domain dom;
remote_typed_param params;
unsigned int flags;
};
struct remote_domain_get_numa_parameters_args {
remote_nonnull_domain dom;
int nparams;
unsigned int flags;
};
struct remote_domain_get_numa_parameters_ret {
remote_typed_param params;
int nparams;
};
struct remote_domain_block_stats_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
};
struct remote_domain_block_stats_ret { /* insert@2 */
hyper rd_req;
hyper rd_bytes;
hyper wr_req;
hyper wr_bytes;
hyper errs;
};
struct remote_domain_block_stats_flags_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
int nparams;
unsigned int flags;
};
struct remote_domain_block_stats_flags_ret {
remote_typed_param params;
int nparams;
};
struct remote_domain_interface_stats_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
};
struct remote_domain_interface_stats_ret { /* insert@2 */
hyper rx_bytes;
hyper rx_packets;
hyper rx_errs;
hyper rx_drop;
hyper tx_bytes;
hyper tx_packets;
hyper tx_errs;
hyper tx_drop;
};
struct remote_domain_set_interface_parameters_args {
remote_nonnull_domain dom;
remote_nonnull_string device;
remote_typed_param params;
unsigned int flags;
};
struct remote_domain_get_interface_parameters_args {
remote_nonnull_domain dom;
remote_nonnull_string device;
int nparams;
unsigned int flags;
};
struct remote_domain_get_interface_parameters_ret {
remote_typed_param params;
int nparams;
};
struct remote_domain_memory_stats_args {
remote_nonnull_domain dom;
unsigned int maxStats;
unsigned int flags;
};
struct remote_domain_memory_stat {
int tag;
unsigned hyper val;
};
struct remote_domain_memory_stats_ret {
remote_domain_memory_stat stats;
};
struct remote_domain_block_peek_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
unsigned hyper offset;
unsigned int size;
unsigned int flags;
};
struct remote_domain_block_peek_ret {
opaque buffer;
};
struct remote_domain_memory_peek_args {
remote_nonnull_domain dom;
unsigned hyper offset;
unsigned int size;
unsigned int flags;
};
struct remote_domain_memory_peek_ret {
opaque buffer;
};
struct remote_domain_get_block_info_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
unsigned int flags;
};
struct remote_domain_get_block_info_ret { /* insert@2 */
unsigned hyper allocation;
unsigned hyper capacity;
unsigned hyper physical;
};
struct remote_connect_list_domains_args {
int maxids;
};
struct remote_connect_list_domains_ret {
int ids; /* insert@1 */
};
struct remote_connect_num_of_domains_ret {
int num;
};
struct remote_domain_create_xml_args {
remote_nonnull_string xml_desc;
unsigned int flags;
};
struct remote_domain_create_xml_ret {
remote_nonnull_domain dom;
};
struct remote_domain_create_xml_with_files_args {
remote_nonnull_string xml_desc;
unsigned int flags;
};
struct remote_domain_create_xml_with_files_ret {
remote_nonnull_domain dom;
};
struct remote_domain_lookup_by_id_args {
int id;
};
struct remote_domain_lookup_by_id_ret {
remote_nonnull_domain dom;
};
struct remote_domain_lookup_by_uuid_args {
remote_uuid uuid;
};
struct remote_domain_lookup_by_uuid_ret {
remote_nonnull_domain dom;
};
struct remote_domain_lookup_by_name_args {
remote_nonnull_string name;
};
struct remote_domain_lookup_by_name_ret {
remote_nonnull_domain dom;
};
struct remote_domain_suspend_args {
remote_nonnull_domain dom;
};
struct remote_domain_resume_args {
remote_nonnull_domain dom;
};
struct remote_domain_pm_suspend_for_duration_args {
remote_nonnull_domain dom;
unsigned int target;
unsigned hyper duration;
unsigned int flags;
};
struct remote_domain_pm_wakeup_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_shutdown_args {
remote_nonnull_domain dom;
};
struct remote_domain_reboot_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_reset_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_destroy_args {
remote_nonnull_domain dom;
};
struct remote_domain_destroy_flags_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_os_type_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_os_type_ret {
remote_nonnull_string type;
};
struct remote_domain_get_max_memory_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_max_memory_ret {
unsigned hyper memory;
};
struct remote_domain_set_max_memory_args {
remote_nonnull_domain dom;
unsigned hyper memory;
};
struct remote_domain_set_memory_args {
remote_nonnull_domain dom;
unsigned hyper memory;
};
struct remote_domain_set_memory_flags_args {
remote_nonnull_domain dom;
unsigned hyper memory;
unsigned int flags;
};
struct remote_domain_set_memory_stats_period_args {
remote_nonnull_domain dom;
int period;
unsigned int flags;
};
struct remote_domain_get_info_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_info_ret { /* insert@1 */
unsigned char state;
unsigned hyper maxMem;
unsigned hyper memory;
unsigned short nrVirtCpu;
unsigned hyper cpuTime;
};
struct remote_domain_save_args {
remote_nonnull_domain dom;
remote_nonnull_string to;
};
struct remote_domain_save_flags_args {
remote_nonnull_domain dom;
remote_nonnull_string to;
remote_string dxml;
unsigned int flags;
};
struct remote_domain_restore_args {
remote_nonnull_string from;
};
struct remote_domain_restore_flags_args {
remote_nonnull_string from;
remote_string dxml;
unsigned int flags;
};
struct remote_domain_save_image_get_xml_desc_args {
remote_nonnull_string file;
unsigned int flags;
};
struct remote_domain_save_image_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_domain_save_image_define_xml_args {
remote_nonnull_string file;
remote_nonnull_string dxml;
unsigned int flags;
};
struct remote_domain_core_dump_args {
remote_nonnull_domain dom;
remote_nonnull_string to;
unsigned int flags;
};
struct remote_domain_core_dump_with_format_args {
remote_nonnull_domain dom;
remote_nonnull_string to;
unsigned int dumpformat;
unsigned int flags;
};
struct remote_domain_screenshot_args {
remote_nonnull_domain dom;
unsigned int screen;
unsigned int flags;
};
struct remote_domain_screenshot_ret {
remote_string mime;
};
struct remote_domain_get_xml_desc_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_domain_migrate_prepare_args {
remote_string uri_in;
unsigned hyper flags;
remote_string dname;
unsigned hyper resource;
};
struct remote_domain_migrate_prepare_ret {
opaque cookie;
remote_string uri_out;
};
struct remote_domain_migrate_perform_args {
remote_nonnull_domain dom;
opaque cookie;
remote_nonnull_string uri;
unsigned hyper flags;
remote_string dname;
unsigned hyper resource;
};
struct remote_domain_migrate_finish_args {
remote_nonnull_string dname;
opaque cookie;
remote_nonnull_string uri;
unsigned hyper flags;
};
struct remote_domain_migrate_finish_ret {
remote_nonnull_domain ddom;
};
struct remote_domain_migrate_prepare2_args {
remote_string uri_in;
unsigned hyper flags;
remote_string dname;
unsigned hyper resource;
remote_nonnull_string dom_xml;
};
struct remote_domain_migrate_prepare2_ret {
opaque cookie;
remote_string uri_out;
};
struct remote_domain_migrate_finish2_args {
remote_nonnull_string dname;
opaque cookie;
remote_nonnull_string uri;
unsigned hyper flags;
int retcode;
};
struct remote_domain_migrate_finish2_ret {
remote_nonnull_domain ddom;
};
struct remote_connect_list_defined_domains_args {
int maxnames;
};
struct remote_connect_list_defined_domains_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_connect_num_of_defined_domains_ret {
int num;
};
struct remote_domain_create_args {
remote_nonnull_domain dom;
};
struct remote_domain_create_with_flags_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_create_with_flags_ret {
remote_nonnull_domain dom;
};
struct remote_domain_create_with_files_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_create_with_files_ret {
remote_nonnull_domain dom;
};
struct remote_domain_define_xml_args {
remote_nonnull_string xml;
};
struct remote_domain_define_xml_ret {
remote_nonnull_domain dom;
};
struct remote_domain_define_xml_flags_args {
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_domain_define_xml_flags_ret {
remote_nonnull_domain dom;
};
struct remote_domain_undefine_args {
remote_nonnull_domain dom;
};
struct remote_domain_undefine_flags_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_inject_nmi_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_send_key_args {
remote_nonnull_domain dom;
unsigned int codeset;
unsigned int holdtime;
unsigned int keycodes;
unsigned int flags;
};
struct remote_domain_send_process_signal_args {
remote_nonnull_domain dom;
hyper pid_value;
unsigned int signum;
unsigned int flags;
};
struct remote_domain_set_vcpus_args {
remote_nonnull_domain dom;
unsigned int nvcpus;
};
struct remote_domain_set_vcpus_flags_args {
remote_nonnull_domain dom;
unsigned int nvcpus;
unsigned int flags;
};
struct remote_domain_get_vcpus_flags_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_vcpus_flags_ret {
int num;
};
struct remote_domain_pin_vcpu_args {
remote_nonnull_domain dom;
unsigned int vcpu;
opaque cpumap; /* (unsigned char *) */
};
struct remote_domain_pin_vcpu_flags_args {
remote_nonnull_domain dom;
unsigned int vcpu;
opaque cpumap; /* (unsigned char *) */
unsigned int flags;
};
struct remote_domain_get_vcpu_pin_info_args {
remote_nonnull_domain dom;
int ncpumaps;
int maplen;
unsigned int flags;
};
struct remote_domain_get_vcpu_pin_info_ret {
opaque cpumaps;
int num;
};
struct remote_domain_pin_emulator_args {
remote_nonnull_domain dom;
opaque cpumap; /* (unsigned char *) */
unsigned int flags;
};
struct remote_domain_get_emulator_pin_info_args {
remote_nonnull_domain dom;
int maplen;
unsigned int flags;
};
struct remote_domain_get_emulator_pin_info_ret {
opaque cpumaps;
int ret;
};
struct remote_domain_get_vcpus_args {
remote_nonnull_domain dom;
int maxinfo;
int maplen;
};
struct remote_domain_get_vcpus_ret {
remote_vcpu_info info;
opaque cpumaps;
};
struct remote_domain_get_max_vcpus_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_max_vcpus_ret {
int num;
};
struct remote_domain_iothread_info {
unsigned int iothread_id;
opaque cpumap;
};
struct remote_domain_get_iothreads_info_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_iothreads_info_ret {
remote_domain_iothread_info info;
unsigned int ret;
};
struct remote_domain_get_security_label_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_security_label_ret {
char label;
int enforcing;
};
struct remote_domain_get_security_label_list_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_security_label_list_ret {
remote_domain_get_security_label_ret labels;
int ret;
};
struct remote_node_get_security_model_ret {
char model;
char doi;
};
struct remote_domain_attach_device_args {
remote_nonnull_domain dom;
remote_nonnull_string xml;
};
struct remote_domain_attach_device_flags_args {
remote_nonnull_domain dom;
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_domain_detach_device_args {
remote_nonnull_domain dom;
remote_nonnull_string xml;
};
struct remote_domain_detach_device_flags_args {
remote_nonnull_domain dom;
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_domain_update_device_flags_args {
remote_nonnull_domain dom;
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_domain_get_autostart_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_autostart_ret {
int autostart;
};
struct remote_domain_set_autostart_args {
remote_nonnull_domain dom;
int autostart;
};
struct remote_domain_set_metadata_args {
remote_nonnull_domain dom;
int type;
remote_string metadata;
remote_string key;
remote_string uri;
unsigned int flags;
};
struct remote_domain_get_metadata_args {
remote_nonnull_domain dom;
int type;
remote_string uri;
unsigned int flags;
};
struct remote_domain_get_metadata_ret {
remote_nonnull_string metadata;
};
struct remote_domain_block_job_abort_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
unsigned int flags;
};
struct remote_domain_get_block_job_info_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
unsigned int flags;
};
struct remote_domain_get_block_job_info_ret {
int found;
int type;
unsigned hyper bandwidth;
unsigned hyper cur;
unsigned hyper end;
};
struct remote_domain_block_job_set_speed_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
unsigned hyper bandwidth;
unsigned int flags;
};
struct remote_domain_block_pull_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
unsigned hyper bandwidth;
unsigned int flags;
};
struct remote_domain_block_rebase_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
remote_string base;
unsigned hyper bandwidth;
unsigned int flags;
};
struct remote_domain_block_copy_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
remote_nonnull_string destxml;
remote_typed_param params;
unsigned int flags;
};
struct remote_domain_block_commit_args {
remote_nonnull_domain dom;
remote_nonnull_string disk;
remote_string base;
remote_string top;
unsigned hyper bandwidth;
unsigned int flags;
};
struct remote_domain_set_block_io_tune_args {
remote_nonnull_domain dom;
remote_nonnull_string disk;
remote_typed_param params;
unsigned int flags;
};
struct remote_domain_get_block_io_tune_args {
remote_nonnull_domain dom;
remote_string disk;
int nparams;
unsigned int flags;
};
struct remote_domain_get_block_io_tune_ret {
remote_typed_param params;
int nparams;
};
struct remote_domain_get_cpu_stats_args {
remote_nonnull_domain dom;
unsigned int nparams;
int start_cpu;
unsigned int ncpus;
unsigned int flags;
};
struct remote_domain_get_cpu_stats_ret {
remote_typed_param params;
int nparams;
};
struct remote_domain_get_hostname_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_hostname_ret {
remote_nonnull_string hostname;
};
/* Network calls: */
struct remote_connect_num_of_networks_ret {
int num;
};
struct remote_connect_list_networks_args {
int maxnames;
};
struct remote_connect_list_networks_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_connect_num_of_defined_networks_ret {
int num;
};
struct remote_connect_list_defined_networks_args {
int maxnames;
};
struct remote_connect_list_defined_networks_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_network_lookup_by_uuid_args {
remote_uuid uuid;
};
struct remote_network_lookup_by_uuid_ret {
remote_nonnull_network net;
};
struct remote_network_lookup_by_name_args {
remote_nonnull_string name;
};
struct remote_network_lookup_by_name_ret {
remote_nonnull_network net;
};
struct remote_network_create_xml_args {
remote_nonnull_string xml;
};
struct remote_network_create_xml_ret {
remote_nonnull_network net;
};
struct remote_network_define_xml_args {
remote_nonnull_string xml;
};
struct remote_network_define_xml_ret {
remote_nonnull_network net;
};
struct remote_network_undefine_args {
remote_nonnull_network net;
};
struct remote_network_update_args {
remote_nonnull_network net;
unsigned int command;
unsigned int section;
int parentIndex;
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_network_create_args {
remote_nonnull_network net;
};
struct remote_network_destroy_args {
remote_nonnull_network net;
};
struct remote_network_get_xml_desc_args {
remote_nonnull_network net;
unsigned int flags;
};
struct remote_network_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_network_get_bridge_name_args {
remote_nonnull_network net;
};
struct remote_network_get_bridge_name_ret {
remote_nonnull_string name;
};
struct remote_network_get_autostart_args {
remote_nonnull_network net;
};
struct remote_network_get_autostart_ret {
int autostart;
};
struct remote_network_set_autostart_args {
remote_nonnull_network net;
int autostart;
};
/* network filter calls */
struct remote_connect_num_of_nwfilters_ret {
int num;
};
struct remote_connect_list_nwfilters_args {
int maxnames;
};
struct remote_connect_list_nwfilters_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_nwfilter_lookup_by_uuid_args {
remote_uuid uuid;
};
struct remote_nwfilter_lookup_by_uuid_ret {
remote_nonnull_nwfilter nwfilter;
};
struct remote_nwfilter_lookup_by_name_args {
remote_nonnull_string name;
};
struct remote_nwfilter_lookup_by_name_ret {
remote_nonnull_nwfilter nwfilter;
};
struct remote_nwfilter_define_xml_args {
remote_nonnull_string xml;
};
struct remote_nwfilter_define_xml_ret {
remote_nonnull_nwfilter nwfilter;
};
struct remote_nwfilter_undefine_args {
remote_nonnull_nwfilter nwfilter;
};
struct remote_nwfilter_get_xml_desc_args {
remote_nonnull_nwfilter nwfilter;
unsigned int flags;
};
struct remote_nwfilter_get_xml_desc_ret {
remote_nonnull_string xml;
};
/* Interface calls: */
struct remote_connect_num_of_interfaces_ret {
int num;
};
struct remote_connect_list_interfaces_args {
int maxnames;
};
struct remote_connect_list_interfaces_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_connect_num_of_defined_interfaces_ret {
int num;
};
struct remote_connect_list_defined_interfaces_args {
int maxnames;
};
struct remote_connect_list_defined_interfaces_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_interface_lookup_by_name_args {
remote_nonnull_string name;
};
struct remote_interface_lookup_by_name_ret {
remote_nonnull_interface iface;
};
struct remote_interface_lookup_by_mac_string_args {
remote_nonnull_string mac;
};
struct remote_interface_lookup_by_mac_string_ret {
remote_nonnull_interface iface;
};
struct remote_interface_get_xml_desc_args {
remote_nonnull_interface iface;
unsigned int flags;
};
struct remote_interface_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_interface_define_xml_args {
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_interface_define_xml_ret {
remote_nonnull_interface iface;
};
struct remote_interface_undefine_args {
remote_nonnull_interface iface;
};
struct remote_interface_create_args {
remote_nonnull_interface iface;
unsigned int flags;
};
struct remote_interface_destroy_args {
remote_nonnull_interface iface;
unsigned int flags;
};
struct remote_interface_change_begin_args {
unsigned int flags;
};
struct remote_interface_change_commit_args {
unsigned int flags;
};
struct remote_interface_change_rollback_args {
unsigned int flags;
};
/* Auth calls: */
struct remote_auth_list_ret {
remote_auth_type types;
};
struct remote_auth_sasl_init_ret {
remote_nonnull_string mechlist;
};
struct remote_auth_sasl_start_args {
remote_nonnull_string mech;
int nil;
char data;
};
struct remote_auth_sasl_start_ret {
int complete;
int nil;
char data;
};
struct remote_auth_sasl_step_args {
int nil;
char data;
};
struct remote_auth_sasl_step_ret {
int complete;
int nil;
char data;
};
struct remote_auth_polkit_ret {
int complete;
};
/* Storage pool calls: */
struct remote_connect_num_of_storage_pools_ret {
int num;
};
struct remote_connect_list_storage_pools_args {
int maxnames;
};
struct remote_connect_list_storage_pools_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_connect_num_of_defined_storage_pools_ret {
int num;
};
struct remote_connect_list_defined_storage_pools_args {
int maxnames;
};
struct remote_connect_list_defined_storage_pools_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_connect_find_storage_pool_sources_args {
remote_nonnull_string type;
remote_string srcSpec;
unsigned int flags;
};
struct remote_connect_find_storage_pool_sources_ret {
remote_nonnull_string xml;
};
struct remote_storage_pool_lookup_by_uuid_args {
remote_uuid uuid;
};
struct remote_storage_pool_lookup_by_uuid_ret {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_lookup_by_name_args {
remote_nonnull_string name;
};
struct remote_storage_pool_lookup_by_name_ret {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_lookup_by_volume_args {
remote_nonnull_storage_vol vol;
};
struct remote_storage_pool_lookup_by_volume_ret {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_create_xml_args {
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_storage_pool_create_xml_ret {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_define_xml_args {
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_storage_pool_define_xml_ret {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_build_args {
remote_nonnull_storage_pool pool;
unsigned int flags;
};
struct remote_storage_pool_undefine_args {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_create_args {
remote_nonnull_storage_pool pool;
unsigned int flags;
};
struct remote_storage_pool_destroy_args {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_delete_args {
remote_nonnull_storage_pool pool;
unsigned int flags;
};
struct remote_storage_pool_refresh_args {
remote_nonnull_storage_pool pool;
unsigned int flags;
};
struct remote_storage_pool_get_xml_desc_args {
remote_nonnull_storage_pool pool;
unsigned int flags;
};
struct remote_storage_pool_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_storage_pool_get_info_args {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_get_info_ret { /* insert@1 */
unsigned char state;
unsigned hyper capacity;
unsigned hyper allocation;
unsigned hyper available;
};
struct remote_storage_pool_get_autostart_args {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_get_autostart_ret {
int autostart;
};
struct remote_storage_pool_set_autostart_args {
remote_nonnull_storage_pool pool;
int autostart;
};
struct remote_storage_pool_num_of_volumes_args {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_num_of_volumes_ret {
int num;
};
struct remote_storage_pool_list_volumes_args {
remote_nonnull_storage_pool pool;
int maxnames;
};
struct remote_storage_pool_list_volumes_ret {
remote_nonnull_string names; /* insert@1 */
};
/* Storage vol calls: */
struct remote_storage_vol_lookup_by_name_args {
remote_nonnull_storage_pool pool;
remote_nonnull_string name;
};
struct remote_storage_vol_lookup_by_name_ret {
remote_nonnull_storage_vol vol;
};
struct remote_storage_vol_lookup_by_key_args {
remote_nonnull_string key;
};
struct remote_storage_vol_lookup_by_key_ret {
remote_nonnull_storage_vol vol;
};
struct remote_storage_vol_lookup_by_path_args {
remote_nonnull_string path;
};
struct remote_storage_vol_lookup_by_path_ret {
remote_nonnull_storage_vol vol;
};
struct remote_storage_vol_create_xml_args {
remote_nonnull_storage_pool pool;
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_storage_vol_create_xml_ret {
remote_nonnull_storage_vol vol;
};
struct remote_storage_vol_create_xml_from_args {
remote_nonnull_storage_pool pool;
remote_nonnull_string xml;
remote_nonnull_storage_vol clonevol;
unsigned int flags;
};
struct remote_storage_vol_create_xml_from_ret {
remote_nonnull_storage_vol vol;
};
struct remote_storage_vol_delete_args {
remote_nonnull_storage_vol vol;
unsigned int flags;
};
struct remote_storage_vol_wipe_args {
remote_nonnull_storage_vol vol;
unsigned int flags;
};
struct remote_storage_vol_wipe_pattern_args {
remote_nonnull_storage_vol vol;
unsigned int algorithm;
unsigned int flags;
};
struct remote_storage_vol_get_xml_desc_args {
remote_nonnull_storage_vol vol;
unsigned int flags;
};
struct remote_storage_vol_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_storage_vol_get_info_args {
remote_nonnull_storage_vol vol;
};
struct remote_storage_vol_get_info_ret { /* insert@1 */
char type;
unsigned hyper capacity;
unsigned hyper allocation;
};
struct remote_storage_vol_get_path_args {
remote_nonnull_storage_vol vol;
};
struct remote_storage_vol_get_path_ret {
remote_nonnull_string name;
};
struct remote_storage_vol_resize_args {
remote_nonnull_storage_vol vol;
unsigned hyper capacity;
unsigned int flags;
};
/* Node driver calls: */
struct remote_node_num_of_devices_args {
remote_string cap;
unsigned int flags;
};
struct remote_node_num_of_devices_ret {
int num;
};
struct remote_node_list_devices_args {
remote_string cap;
int maxnames;
unsigned int flags;
};
struct remote_node_list_devices_ret {
remote_nonnull_string names; /* insert@2 */
};
struct remote_node_device_lookup_by_name_args {
remote_nonnull_string name;
};
struct remote_node_device_lookup_by_name_ret {
remote_nonnull_node_device dev;
};
struct remote_node_device_lookup_scsi_host_by_wwn_args {
remote_nonnull_string wwnn;
remote_nonnull_string wwpn;
unsigned int flags;
};
struct remote_node_device_lookup_scsi_host_by_wwn_ret {
remote_nonnull_node_device dev;
};
struct remote_node_device_get_xml_desc_args {
remote_nonnull_string name;
unsigned int flags;
};
struct remote_node_device_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_node_device_get_parent_args {
remote_nonnull_string name;
};
struct remote_node_device_get_parent_ret {
remote_string parent;
};
struct remote_node_device_num_of_caps_args {
remote_nonnull_string name;
};
struct remote_node_device_num_of_caps_ret {
int num;
};
struct remote_node_device_list_caps_args {
remote_nonnull_string name;
int maxnames;
};
struct remote_node_device_list_caps_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_node_device_dettach_args {
remote_nonnull_string name;
};
struct remote_node_device_detach_flags_args {
remote_nonnull_string name;
remote_string driverName;
unsigned int flags;
};
struct remote_node_device_re_attach_args {
remote_nonnull_string name;
};
struct remote_node_device_reset_args {
remote_nonnull_string name;
};
struct remote_node_device_create_xml_args {
remote_nonnull_string xml_desc;
unsigned int flags;
};
struct remote_node_device_create_xml_ret {
remote_nonnull_node_device dev;
};
struct remote_node_device_destroy_args {
remote_nonnull_string name;
};
/*
* Events Register/Deregister:
* It would seem rpcgen does not like both args and ret
* to be null. It will not generate the prototype otherwise.
* Pass back a redundant boolean to force prototype generation.
*/
struct remote_connect_domain_event_register_ret {
int cb_registered;
};
struct remote_connect_domain_event_deregister_ret {
int cb_registered;
};
struct remote_domain_event_lifecycle_msg {
remote_nonnull_domain dom;
int event;
int detail;
};
struct remote_domain_event_callback_lifecycle_msg {
int callbackID;
remote_domain_event_lifecycle_msg msg;
};
struct remote_connect_domain_xml_from_native_args {
remote_nonnull_string nativeFormat;
remote_nonnull_string nativeConfig;
unsigned int flags;
};
struct remote_connect_domain_xml_from_native_ret {
remote_nonnull_string domainXml;
};
struct remote_connect_domain_xml_to_native_args {
remote_nonnull_string nativeFormat;
remote_nonnull_string domainXml;
unsigned int flags;
};
struct remote_connect_domain_xml_to_native_ret {
remote_nonnull_string nativeConfig;
};
struct remote_connect_num_of_secrets_ret {
int num;
};
struct remote_connect_list_secrets_args {
int maxuuids;
};
struct remote_connect_list_secrets_ret {
remote_nonnull_string uuids; /* insert@1 */
};
struct remote_secret_lookup_by_uuid_args {
remote_uuid uuid;
};
struct remote_secret_lookup_by_uuid_ret {
remote_nonnull_secret secret;
};
struct remote_secret_define_xml_args {
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_secret_define_xml_ret {
remote_nonnull_secret secret;
};
struct remote_secret_get_xml_desc_args {
remote_nonnull_secret secret;
unsigned int flags;
};
struct remote_secret_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_secret_set_value_args {
remote_nonnull_secret secret;
opaque value; /* (const unsigned char *) */
unsigned int flags;
};
struct remote_secret_get_value_args {
remote_nonnull_secret secret;
unsigned int flags;
};
struct remote_secret_get_value_ret {
opaque value;
};
struct remote_secret_undefine_args {
remote_nonnull_secret secret;
};
struct remote_secret_lookup_by_usage_args {
int usageType;
remote_nonnull_string usageID;
};
struct remote_secret_lookup_by_usage_ret {
remote_nonnull_secret secret;
};
struct remote_domain_migrate_prepare_tunnel_args {
unsigned hyper flags;
remote_string dname;
unsigned hyper resource;
remote_nonnull_string dom_xml;
};
struct remote_connect_is_secure_ret {
int secure;
};
struct remote_domain_is_active_args {
remote_nonnull_domain dom;
};
struct remote_domain_is_active_ret {
int active;
};
struct remote_domain_is_persistent_args {
remote_nonnull_domain dom;
};
struct remote_domain_is_persistent_ret {
int persistent;
};
struct remote_domain_is_updated_args {
remote_nonnull_domain dom;
};
struct remote_domain_is_updated_ret {
int updated;
};
struct remote_network_is_active_args {
remote_nonnull_network net;
};
struct remote_network_is_active_ret {
int active;
};
struct remote_network_is_persistent_args {
remote_nonnull_network net;
};
struct remote_network_is_persistent_ret {
int persistent;
};
struct remote_storage_pool_is_active_args {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_is_active_ret {
int active;
};
struct remote_storage_pool_is_persistent_args {
remote_nonnull_storage_pool pool;
};
struct remote_storage_pool_is_persistent_ret {
int persistent;
};
struct remote_interface_is_active_args {
remote_nonnull_interface iface;
};
struct remote_interface_is_active_ret {
int active;
};
struct remote_connect_compare_cpu_args {
remote_nonnull_string xml;
unsigned int flags;
};
struct remote_connect_compare_cpu_ret {
int result;
};
struct remote_connect_baseline_cpu_args {
remote_nonnull_string xmlCPUs; /* (const char **) */
unsigned int flags;
};
struct remote_connect_baseline_cpu_ret {
remote_nonnull_string cpu;
};
struct remote_domain_get_job_info_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_job_info_ret { /* insert@1 */
int type;
unsigned hyper timeElapsed;
unsigned hyper timeRemaining;
unsigned hyper dataTotal;
unsigned hyper dataProcessed;
unsigned hyper dataRemaining;
unsigned hyper memTotal;
unsigned hyper memProcessed;
unsigned hyper memRemaining;
unsigned hyper fileTotal;
unsigned hyper fileProcessed;
unsigned hyper fileRemaining;
};
struct remote_domain_get_job_stats_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_job_stats_ret {
int type;
remote_typed_param params;
};
struct remote_domain_abort_job_args {
remote_nonnull_domain dom;
};
struct remote_domain_migrate_set_max_downtime_args {
remote_nonnull_domain dom;
unsigned hyper downtime;
unsigned int flags;
};
struct remote_domain_migrate_get_compression_cache_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_migrate_get_compression_cache_ret {
unsigned hyper cacheSize; /* insert@1 */
};
struct remote_domain_migrate_set_compression_cache_args {
remote_nonnull_domain dom;
unsigned hyper cacheSize;
unsigned int flags;
};
struct remote_domain_migrate_set_max_speed_args {
remote_nonnull_domain dom;
unsigned hyper bandwidth;
unsigned int flags;
};
struct remote_domain_migrate_get_max_speed_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_migrate_get_max_speed_ret {
unsigned hyper bandwidth; /* insert@1 */
};
struct remote_connect_domain_event_register_any_args {
int eventID;
};
struct remote_connect_domain_event_deregister_any_args {
int eventID;
};
struct remote_connect_domain_event_callback_register_any_args {
int eventID;
remote_domain dom;
};
struct remote_connect_domain_event_callback_register_any_ret {
int callbackID;
};
struct remote_connect_domain_event_callback_deregister_any_args {
int callbackID;
};
struct remote_domain_event_reboot_msg {
remote_nonnull_domain dom;
};
struct remote_domain_event_callback_reboot_msg {
int callbackID;
remote_domain_event_reboot_msg msg;
};
struct remote_domain_event_rtc_change_msg {
remote_nonnull_domain dom;
hyper offset;
};
struct remote_domain_event_callback_rtc_change_msg {
int callbackID;
remote_domain_event_rtc_change_msg msg;
};
struct remote_domain_event_watchdog_msg {
remote_nonnull_domain dom;
int action;
};
struct remote_domain_event_callback_watchdog_msg {
int callbackID;
remote_domain_event_watchdog_msg msg;
};
struct remote_domain_event_io_error_msg {
remote_nonnull_domain dom;
remote_nonnull_string srcPath;
remote_nonnull_string devAlias;
int action;
};
struct remote_domain_event_callback_io_error_msg {
int callbackID;
remote_domain_event_io_error_msg msg;
};
struct remote_domain_event_io_error_reason_msg {
remote_nonnull_domain dom;
remote_nonnull_string srcPath;
remote_nonnull_string devAlias;
int action;
remote_nonnull_string reason;
};
struct remote_domain_event_callback_io_error_reason_msg {
int callbackID;
remote_domain_event_io_error_reason_msg msg;
};
struct remote_domain_event_graphics_address {
int family;
remote_nonnull_string node;
remote_nonnull_string service;
};
const REMOTE_DOMAIN_EVENT_GRAPHICS_IDENTITY_MAX = 20;
struct remote_domain_event_graphics_identity {
remote_nonnull_string type;
remote_nonnull_string name;
};
struct remote_domain_event_graphics_msg {
remote_nonnull_domain dom;
int phase;
remote_domain_event_graphics_address local;
remote_domain_event_graphics_address remote;
remote_nonnull_string authScheme;
remote_domain_event_graphics_identity subject;
};
struct remote_domain_event_callback_graphics_msg {
int callbackID;
remote_domain_event_graphics_msg msg;
};
struct remote_domain_event_block_job_msg {
remote_nonnull_domain dom;
remote_nonnull_string path;
int type;
int status;
};
struct remote_domain_event_callback_block_job_msg {
int callbackID;
remote_domain_event_block_job_msg msg;
};
struct remote_domain_event_disk_change_msg {
remote_nonnull_domain dom;
remote_string oldSrcPath;
remote_string newSrcPath;
remote_nonnull_string devAlias;
int reason;
};
struct remote_domain_event_callback_disk_change_msg {
int callbackID;
remote_domain_event_disk_change_msg msg;
};
struct remote_domain_event_tray_change_msg {
remote_nonnull_domain dom;
remote_nonnull_string devAlias;
int reason;
};
struct remote_domain_event_callback_tray_change_msg {
int callbackID;
remote_domain_event_tray_change_msg msg;
};
struct remote_domain_event_pmwakeup_msg {
remote_nonnull_domain dom;
};
struct remote_domain_event_callback_pmwakeup_msg {
int callbackID;
int reason;
remote_domain_event_pmwakeup_msg msg;
};
struct remote_domain_event_pmsuspend_msg {
remote_nonnull_domain dom;
};
struct remote_domain_event_callback_pmsuspend_msg {
int callbackID;
int reason;
remote_domain_event_pmsuspend_msg msg;
};
struct remote_domain_event_balloon_change_msg {
remote_nonnull_domain dom;
unsigned hyper actual;
};
struct remote_domain_event_callback_balloon_change_msg {
int callbackID;
remote_domain_event_balloon_change_msg msg;
};
struct remote_domain_event_pmsuspend_disk_msg {
remote_nonnull_domain dom;
};
struct remote_domain_event_callback_pmsuspend_disk_msg {
int callbackID;
int reason;
remote_domain_event_pmsuspend_disk_msg msg;
};
struct remote_domain_managed_save_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_has_managed_save_image_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_has_managed_save_image_ret {
int result;
};
struct remote_domain_managed_save_remove_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_snapshot_create_xml_args {
remote_nonnull_domain dom;
remote_nonnull_string xml_desc;
unsigned int flags;
};
struct remote_domain_snapshot_create_xml_ret {
remote_nonnull_domain_snapshot snap;
};
struct remote_domain_snapshot_get_xml_desc_args {
remote_nonnull_domain_snapshot snap;
unsigned int flags;
};
struct remote_domain_snapshot_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_domain_snapshot_num_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_snapshot_num_ret {
int num;
};
struct remote_domain_snapshot_list_names_args {
remote_nonnull_domain dom;
int maxnames;
unsigned int flags;
};
struct remote_domain_snapshot_list_names_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_domain_list_all_snapshots_args {
remote_nonnull_domain dom;
int need_results;
unsigned int flags;
};
struct remote_domain_list_all_snapshots_ret {
remote_nonnull_domain_snapshot snapshots;
int ret;
};
struct remote_domain_snapshot_num_children_args {
remote_nonnull_domain_snapshot snap;
unsigned int flags;
};
struct remote_domain_snapshot_num_children_ret {
int num;
};
struct remote_domain_snapshot_list_children_names_args {
remote_nonnull_domain_snapshot snap;
int maxnames;
unsigned int flags;
};
struct remote_domain_snapshot_list_children_names_ret {
remote_nonnull_string names; /* insert@1 */
};
struct remote_domain_snapshot_list_all_children_args {
remote_nonnull_domain_snapshot snapshot;
int need_results;
unsigned int flags;
};
struct remote_domain_snapshot_list_all_children_ret {
remote_nonnull_domain_snapshot snapshots;
int ret;
};
struct remote_domain_snapshot_lookup_by_name_args {
remote_nonnull_domain dom;
remote_nonnull_string name;
unsigned int flags;
};
struct remote_domain_snapshot_lookup_by_name_ret {
remote_nonnull_domain_snapshot snap;
};
struct remote_domain_has_current_snapshot_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_has_current_snapshot_ret {
int result;
};
struct remote_domain_snapshot_get_parent_args {
remote_nonnull_domain_snapshot snap;
unsigned int flags;
};
struct remote_domain_snapshot_get_parent_ret {
remote_nonnull_domain_snapshot snap;
};
struct remote_domain_snapshot_current_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_snapshot_current_ret {
remote_nonnull_domain_snapshot snap;
};
struct remote_domain_snapshot_is_current_args {
remote_nonnull_domain_snapshot snap;
unsigned int flags;
};
struct remote_domain_snapshot_is_current_ret {
int current;
};
struct remote_domain_snapshot_has_metadata_args {
remote_nonnull_domain_snapshot snap;
unsigned int flags;
};
struct remote_domain_snapshot_has_metadata_ret {
int metadata;
};
struct remote_domain_revert_to_snapshot_args {
remote_nonnull_domain_snapshot snap;
unsigned int flags;
};
struct remote_domain_snapshot_delete_args {
remote_nonnull_domain_snapshot snap;
unsigned int flags;
};
struct remote_domain_open_console_args {
remote_nonnull_domain dom;
remote_string dev_name;
unsigned int flags;
};
struct remote_domain_open_channel_args {
remote_nonnull_domain dom;
remote_string name;
unsigned int flags;
};
struct remote_storage_vol_upload_args {
remote_nonnull_storage_vol vol;
unsigned hyper offset;
unsigned hyper length;
unsigned int flags;
};
struct remote_storage_vol_download_args {
remote_nonnull_storage_vol vol;
unsigned hyper offset;
unsigned hyper length;
unsigned int flags;
};
struct remote_domain_get_state_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_state_ret {
int state;
int reason;
};
struct remote_domain_migrate_begin3_args {
remote_nonnull_domain dom;
remote_string xmlin;
unsigned hyper flags;
remote_string dname;
unsigned hyper resource;
};
struct remote_domain_migrate_begin3_ret {
opaque cookie_out;
remote_nonnull_string xml;
};
struct remote_domain_migrate_prepare3_args {
opaque cookie_in;
remote_string uri_in;
unsigned hyper flags;
remote_string dname;
unsigned hyper resource;
remote_nonnull_string dom_xml;
};
struct remote_domain_migrate_prepare3_ret {
opaque cookie_out;
remote_string uri_out;
};
struct remote_domain_migrate_prepare_tunnel3_args {
opaque cookie_in;
unsigned hyper flags;
remote_string dname;
unsigned hyper resource;
remote_nonnull_string dom_xml;
};
struct remote_domain_migrate_prepare_tunnel3_ret {
opaque cookie_out; /* insert@3 */
};
struct remote_domain_migrate_perform3_args {
remote_nonnull_domain dom;
remote_string xmlin;
opaque cookie_in;
remote_string dconnuri;
remote_string uri;
unsigned hyper flags;
remote_string dname;
unsigned hyper resource;
};
struct remote_domain_migrate_perform3_ret {
opaque cookie_out;
};
struct remote_domain_migrate_finish3_args {
remote_nonnull_string dname;
opaque cookie_in;
remote_string dconnuri;
remote_string uri;
unsigned hyper flags;
int cancelled;
};
struct remote_domain_migrate_finish3_ret {
remote_nonnull_domain dom;
opaque cookie_out;
};
struct remote_domain_migrate_confirm3_args {
remote_nonnull_domain dom;
opaque cookie_in;
unsigned hyper flags;
int cancelled;
};
struct remote_domain_event_control_error_msg {
remote_nonnull_domain dom;
};
struct remote_domain_event_callback_control_error_msg {
int callbackID;
remote_domain_event_control_error_msg msg;
};
struct remote_domain_get_control_info_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_control_info_ret { /* insert@1 */
unsigned int state;
unsigned int details;
unsigned hyper stateTime;
};
struct remote_domain_open_graphics_args {
remote_nonnull_domain dom;
unsigned int idx;
unsigned int flags;
};
struct remote_domain_open_graphics_fd_args {
remote_nonnull_domain dom;
unsigned int idx;
unsigned int flags;
};
struct remote_node_suspend_for_duration_args {
unsigned int target;
unsigned hyper duration;
unsigned int flags;
};
struct remote_domain_shutdown_flags_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_disk_errors_args {
remote_nonnull_domain dom;
unsigned int maxerrors;
unsigned int flags;
};
struct remote_domain_get_disk_errors_ret {
remote_domain_disk_error errors;
int nerrors;
};
struct remote_connect_list_all_domains_args {
int need_results;
unsigned int flags;
};
struct remote_connect_list_all_domains_ret {
remote_nonnull_domain domains;
unsigned int ret;
};
struct remote_connect_list_all_storage_pools_args {
int need_results;
unsigned int flags;
};
struct remote_connect_list_all_storage_pools_ret {
remote_nonnull_storage_pool pools;
unsigned int ret;
};
struct remote_storage_pool_list_all_volumes_args {
remote_nonnull_storage_pool pool;
int need_results;
unsigned int flags;
};
struct remote_storage_pool_list_all_volumes_ret {
remote_nonnull_storage_vol vols;
unsigned int ret;
};
struct remote_connect_list_all_networks_args {
int need_results;
unsigned int flags;
};
struct remote_connect_list_all_networks_ret {
remote_nonnull_network nets;
unsigned int ret;
};
struct remote_connect_list_all_interfaces_args {
int need_results;
unsigned int flags;
};
struct remote_connect_list_all_interfaces_ret {
remote_nonnull_interface ifaces;
unsigned int ret;
};
struct remote_connect_list_all_node_devices_args {
int need_results;
unsigned int flags;
};
struct remote_connect_list_all_node_devices_ret {
remote_nonnull_node_device devices;
unsigned int ret;
};
struct remote_connect_list_all_nwfilters_args {
int need_results;
unsigned int flags;
};
struct remote_connect_list_all_nwfilters_ret {
remote_nonnull_nwfilter filters;
unsigned int ret;
};
struct remote_connect_list_all_secrets_args {
int need_results;
unsigned int flags;
};
struct remote_connect_list_all_secrets_ret {
remote_nonnull_secret secrets;
unsigned int ret;
};
struct remote_node_set_memory_parameters_args {
remote_typed_param params;
unsigned int flags;
};
struct remote_node_get_memory_parameters_args {
int nparams;
unsigned int flags;
};
struct remote_node_get_memory_parameters_ret {
remote_typed_param params;
int nparams;
};
struct remote_node_get_cpu_map_args {
int need_map;
int need_online;
unsigned int flags;
};
struct remote_node_get_cpu_map_ret {
opaque cpumap;
unsigned int online;
int ret;
};
struct remote_domain_fstrim_args {
remote_nonnull_domain dom;
remote_string mountPoint;
unsigned hyper minimum;
unsigned int flags;
};
struct remote_domain_get_time_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_time_ret {
hyper seconds;
unsigned int nseconds;
};
struct remote_domain_set_time_args {
remote_nonnull_domain dom;
hyper seconds;
unsigned int nseconds;
unsigned int flags;
};
struct remote_domain_migrate_begin3_params_args {
remote_nonnull_domain dom;
remote_typed_param params;
unsigned int flags;
};
struct remote_domain_migrate_begin3_params_ret {
opaque cookie_out;
remote_nonnull_string xml;
};
struct remote_domain_migrate_prepare3_params_args {
remote_typed_param params;
opaque cookie_in;
unsigned int flags;
};
struct remote_domain_migrate_prepare3_params_ret {
opaque cookie_out;
remote_string uri_out;
};
struct remote_domain_migrate_prepare_tunnel3_params_args {
remote_typed_param params;
opaque cookie_in;
unsigned int flags;
};
struct remote_domain_migrate_prepare_tunnel3_params_ret {
opaque cookie_out;
};
struct remote_domain_migrate_perform3_params_args {
remote_nonnull_domain dom;
remote_string dconnuri;
remote_typed_param params;
opaque cookie_in;
unsigned int flags;
};
struct remote_domain_migrate_perform3_params_ret {
opaque cookie_out;
};
struct remote_domain_migrate_finish3_params_args {
remote_typed_param params;
opaque cookie_in;
unsigned int flags;
int cancelled;
};
struct remote_domain_migrate_finish3_params_ret {
remote_nonnull_domain dom;
opaque cookie_out;
};
struct remote_domain_migrate_confirm3_params_args {
remote_nonnull_domain dom;
remote_typed_param params;
opaque cookie_in;
unsigned int flags;
int cancelled;
};
/* The device removed event is the last event where we have to support
* dual forms for back-compat to older clients; all future events can
* use just the modern form with callbackID. */
struct remote_domain_event_device_removed_msg {
remote_nonnull_domain dom;
remote_nonnull_string devAlias;
};
struct remote_domain_event_callback_device_removed_msg {
int callbackID;
remote_domain_event_device_removed_msg msg;
};
struct remote_domain_event_block_job_2_msg {
int callbackID;
remote_nonnull_domain dom;
remote_nonnull_string dst;
int type;
int status;
};
struct remote_domain_event_callback_tunable_msg {
int callbackID;
remote_nonnull_domain dom;
remote_typed_param params;
};
struct remote_connect_get_cpu_model_names_args {
remote_nonnull_string arch;
int need_results;
unsigned int flags;
};
struct remote_connect_get_cpu_model_names_ret {
remote_nonnull_string models;
int ret;
};
struct remote_connect_network_event_register_any_args {
int eventID;
remote_network net;
};
struct remote_connect_network_event_register_any_ret {
int callbackID;
};
struct remote_connect_network_event_deregister_any_args {
int callbackID;
};
struct remote_network_event_lifecycle_msg {
int callbackID;
remote_nonnull_network net;
int event;
int detail;
};
struct remote_domain_fsfreeze_args {
remote_nonnull_domain dom;
remote_nonnull_string mountpoints; /* (const char **) */
unsigned int flags;
};
struct remote_domain_fsfreeze_ret {
int filesystems;
};
struct remote_domain_fsthaw_args {
remote_nonnull_domain dom;
remote_nonnull_string mountpoints; /* (const char **) */
unsigned int flags;
};
struct remote_domain_fsthaw_ret {
int filesystems;
};
struct remote_node_get_free_pages_args {
unsigned int pages;
int startCell;
unsigned int cellCount;
unsigned int flags;
};
struct remote_node_get_free_pages_ret {
unsigned hyper counts;
};
struct remote_node_alloc_pages_args {
unsigned int pageSizes;
unsigned hyper pageCounts;
int startCell;
unsigned int cellCount;
unsigned int flags;
};
struct remote_node_alloc_pages_ret {
int ret;
};
struct remote_network_dhcp_lease {
remote_nonnull_string iface;
hyper expirytime;
int type;
remote_string mac;
remote_string iaid;
remote_nonnull_string ipaddr;
unsigned int prefix;
remote_string hostname;
remote_string clientid;
};
struct remote_network_get_dhcp_leases_args {
remote_nonnull_network net;
remote_string mac;
int need_results;
unsigned int flags;
};
struct remote_network_get_dhcp_leases_ret {
remote_network_dhcp_lease leases;
unsigned int ret;
};
struct remote_domain_stats_record {
remote_nonnull_domain dom;
remote_typed_param params;
};
struct remote_connect_get_all_domain_stats_args {
remote_nonnull_domain doms;
unsigned int stats;
unsigned int flags;
};
struct remote_domain_event_callback_agent_lifecycle_msg {
int callbackID;
remote_nonnull_domain dom;
int state;
int reason;
};
struct remote_connect_get_all_domain_stats_ret {
remote_domain_stats_record retStats;
};
struct remote_domain_fsinfo {
remote_nonnull_string mountpoint;
remote_nonnull_string name;
remote_nonnull_string fstype;
remote_nonnull_string dev_aliases; /* (const char **) */
};
struct remote_domain_get_fsinfo_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_fsinfo_ret {
remote_domain_fsinfo info;
unsigned int ret;
};
/*----- Protocol. -----*/
/* Define the program number, protocol version and procedure numbers here. */
const REMOTE_PROGRAM = 0x20008086;
const REMOTE_PROTOCOL_VERSION = 1;
enum remote_procedure {
/* Each function must be preceded by a comment providing one or
* more annotations:
*
* - @generate: none|client|server|both
*
* Whether to generate the dispatch stubs for the server
* and/or client code.
*
* - @readstream: paramnumber
* - @writestream: paramnumber
*
* The @readstream or @writestream annotations let daemon and src/remote
* create a stream. The direction is defined from the src/remote point
* of view. A readstream transfers data from daemon to src/remote. The
* specifies at which offset the stream parameter is inserted
* in the function parameter list.
*
* - @priority: low|high
*
* Each API that might eventually access hypervisor's monitor (and thus
* block) MUST fall into low priority. However, there are some exceptions
* to this rule, e.g. domainDestroy. Other APIs MAY be marked as high
* priority. If in doubt, it's safe to choose low. Low is taken as default,
* and thus can be left out.
*
* - @acl: