From fc23185e84af4260409f9d9a87871c983f14e41f Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 11 Jun 2007 11:36:17 +0000 Subject: [PATCH] Mon Jun 11 12:34:00 BST 2007 Richard W.M. Jones * qemud/remote_protocol.x qemud/rpcgen_fix.pl qemud/remote_protocol.c qemud/remote_protocol.h: Client/server protocol used by remote. --- ChangeLog | 6 + qemud/remote_protocol.c | 1005 +++++++++++++++++++++++++++++++++++++++ qemud/remote_protocol.h | 792 ++++++++++++++++++++++++++++++ qemud/remote_protocol.x | 612 ++++++++++++++++++++++++ qemud/rpcgen_fix.pl | 80 ++++ 5 files changed, 2495 insertions(+) create mode 100644 qemud/remote_protocol.c create mode 100644 qemud/remote_protocol.h create mode 100644 qemud/remote_protocol.x create mode 100644 qemud/rpcgen_fix.pl diff --git a/ChangeLog b/ChangeLog index 3ac2b3493f..4f2f456882 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Jun 11 12:34:00 BST 2007 Richard W.M. Jones + + * qemud/remote_protocol.x qemud/rpcgen_fix.pl + qemud/remote_protocol.c qemud/remote_protocol.h: Client/server + protocol used by remote. + Fri Jun 8 13:06:01 CEST 2007 Daniel Veillard * configure.in libvirt.spec.in include/libvirt/libvirt.h diff --git a/qemud/remote_protocol.c b/qemud/remote_protocol.c new file mode 100644 index 0000000000..1bf6157508 --- /dev/null +++ b/qemud/remote_protocol.c @@ -0,0 +1,1005 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#include "remote_protocol.h" +#include "libvirt/libvirt.h" + +bool_t +xdr_remote_nonnull_string (XDR *xdrs, remote_nonnull_string *objp) +{ + + if (!xdr_string (xdrs, objp, REMOTE_STRING_MAX)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_string (XDR *xdrs, remote_string *objp) +{ + + if (!xdr_pointer (xdrs, (char **)objp, sizeof (remote_nonnull_string), (xdrproc_t) xdr_remote_nonnull_string)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_uuid (XDR *xdrs, remote_uuid objp) +{ + + if (!xdr_opaque (xdrs, objp, VIR_UUID_BUFLEN)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_nonnull_domain (XDR *xdrs, remote_nonnull_domain *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->name)) + return FALSE; + if (!xdr_remote_uuid (xdrs, objp->uuid)) + return FALSE; + if (!xdr_int (xdrs, &objp->id)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_nonnull_network (XDR *xdrs, remote_nonnull_network *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->name)) + return FALSE; + if (!xdr_remote_uuid (xdrs, objp->uuid)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain (XDR *xdrs, remote_domain *objp) +{ + + if (!xdr_pointer (xdrs, (char **)objp, sizeof (remote_nonnull_domain), (xdrproc_t) xdr_remote_nonnull_domain)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network (XDR *xdrs, remote_network *objp) +{ + + if (!xdr_pointer (xdrs, (char **)objp, sizeof (remote_nonnull_network), (xdrproc_t) xdr_remote_nonnull_network)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_error (XDR *xdrs, remote_error *objp) +{ + + if (!xdr_int (xdrs, &objp->code)) + return FALSE; + if (!xdr_int (xdrs, &objp->domain)) + return FALSE; + if (!xdr_remote_string (xdrs, &objp->message)) + return FALSE; + if (!xdr_int (xdrs, &objp->level)) + return FALSE; + if (!xdr_remote_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_remote_string (xdrs, &objp->str1)) + return FALSE; + if (!xdr_remote_string (xdrs, &objp->str2)) + return FALSE; + if (!xdr_remote_string (xdrs, &objp->str3)) + return FALSE; + if (!xdr_int (xdrs, &objp->int1)) + return FALSE; + if (!xdr_int (xdrs, &objp->int2)) + return FALSE; + if (!xdr_remote_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_vcpu_info (XDR *xdrs, remote_vcpu_info *objp) +{ + + if (!xdr_u_int (xdrs, &objp->number)) + return FALSE; + if (!xdr_int (xdrs, &objp->state)) + return FALSE; + if (!xdr_u_quad_t (xdrs, &objp->cpu_time)) + return FALSE; + if (!xdr_int (xdrs, &objp->cpu)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_open_args (XDR *xdrs, remote_open_args *objp) +{ + + if (!xdr_remote_string (xdrs, &objp->name)) + return FALSE; + if (!xdr_int (xdrs, &objp->flags)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_get_type_ret (XDR *xdrs, remote_get_type_ret *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->type)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_get_version_ret (XDR *xdrs, remote_get_version_ret *objp) +{ + + if (!xdr_quad_t (xdrs, &objp->hv_ver)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_get_max_vcpus_args (XDR *xdrs, remote_get_max_vcpus_args *objp) +{ + + if (!xdr_remote_string (xdrs, &objp->type)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_get_max_vcpus_ret (XDR *xdrs, remote_get_max_vcpus_ret *objp) +{ + + if (!xdr_int (xdrs, &objp->max_vcpus)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_node_get_info_ret (XDR *xdrs, remote_node_get_info_ret *objp) +{ + register int32_t *buf; + + + if (xdrs->x_op == XDR_ENCODE) { + if (!xdr_vector (xdrs, (char *)objp->model, 32, + sizeof (char), (xdrproc_t) xdr_char)) + return FALSE; + if (!xdr_quad_t (xdrs, &objp->memory)) + return FALSE; + buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_int (xdrs, &objp->cpus)) + return FALSE; + if (!xdr_int (xdrs, &objp->mhz)) + return FALSE; + if (!xdr_int (xdrs, &objp->nodes)) + return FALSE; + if (!xdr_int (xdrs, &objp->sockets)) + return FALSE; + if (!xdr_int (xdrs, &objp->cores)) + return FALSE; + if (!xdr_int (xdrs, &objp->threads)) + return FALSE; + } else { + (void)IXDR_PUT_INT32(buf, objp->cpus); + (void)IXDR_PUT_INT32(buf, objp->mhz); + (void)IXDR_PUT_INT32(buf, objp->nodes); + (void)IXDR_PUT_INT32(buf, objp->sockets); + (void)IXDR_PUT_INT32(buf, objp->cores); + (void)IXDR_PUT_INT32(buf, objp->threads); + } + return TRUE; + } else if (xdrs->x_op == XDR_DECODE) { + if (!xdr_vector (xdrs, (char *)objp->model, 32, + sizeof (char), (xdrproc_t) xdr_char)) + return FALSE; + if (!xdr_quad_t (xdrs, &objp->memory)) + return FALSE; + buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); + if (buf == NULL) { + if (!xdr_int (xdrs, &objp->cpus)) + return FALSE; + if (!xdr_int (xdrs, &objp->mhz)) + return FALSE; + if (!xdr_int (xdrs, &objp->nodes)) + return FALSE; + if (!xdr_int (xdrs, &objp->sockets)) + return FALSE; + if (!xdr_int (xdrs, &objp->cores)) + return FALSE; + if (!xdr_int (xdrs, &objp->threads)) + return FALSE; + } else { + objp->cpus = IXDR_GET_LONG(buf); + objp->mhz = IXDR_GET_LONG(buf); + objp->nodes = IXDR_GET_LONG(buf); + objp->sockets = IXDR_GET_LONG(buf); + objp->cores = IXDR_GET_LONG(buf); + objp->threads = IXDR_GET_LONG(buf); + } + return TRUE; + } + + if (!xdr_vector (xdrs, (char *)objp->model, 32, + sizeof (char), (xdrproc_t) xdr_char)) + return FALSE; + if (!xdr_quad_t (xdrs, &objp->memory)) + return FALSE; + if (!xdr_int (xdrs, &objp->cpus)) + return FALSE; + if (!xdr_int (xdrs, &objp->mhz)) + return FALSE; + if (!xdr_int (xdrs, &objp->nodes)) + return FALSE; + if (!xdr_int (xdrs, &objp->sockets)) + return FALSE; + if (!xdr_int (xdrs, &objp->cores)) + return FALSE; + if (!xdr_int (xdrs, &objp->threads)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_get_capabilities_ret (XDR *xdrs, remote_get_capabilities_ret *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->capabilities)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_list_domains_args (XDR *xdrs, remote_list_domains_args *objp) +{ + + if (!xdr_int (xdrs, &objp->maxids)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_list_domains_ret (XDR *xdrs, remote_list_domains_ret *objp) +{ + char **objp_cpp0 = (char **) (void *) &objp->ids.ids_val; + + if (!xdr_array (xdrs, objp_cpp0, (u_int *) &objp->ids.ids_len, REMOTE_DOMAIN_ID_LIST_MAX, + sizeof (int), (xdrproc_t) xdr_int)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_num_of_domains_ret (XDR *xdrs, remote_num_of_domains_ret *objp) +{ + + if (!xdr_int (xdrs, &objp->num)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_create_linux_args (XDR *xdrs, remote_domain_create_linux_args *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->xml_desc)) + return FALSE; + if (!xdr_int (xdrs, &objp->flags)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_create_linux_ret (XDR *xdrs, remote_domain_create_linux_ret *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_lookup_by_id_args (XDR *xdrs, remote_domain_lookup_by_id_args *objp) +{ + + if (!xdr_int (xdrs, &objp->id)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_lookup_by_id_ret (XDR *xdrs, remote_domain_lookup_by_id_ret *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_lookup_by_uuid_args (XDR *xdrs, remote_domain_lookup_by_uuid_args *objp) +{ + + if (!xdr_remote_uuid (xdrs, objp->uuid)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_lookup_by_uuid_ret (XDR *xdrs, remote_domain_lookup_by_uuid_ret *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_lookup_by_name_args (XDR *xdrs, remote_domain_lookup_by_name_args *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->name)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_lookup_by_name_ret (XDR *xdrs, remote_domain_lookup_by_name_ret *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_suspend_args (XDR *xdrs, remote_domain_suspend_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_resume_args (XDR *xdrs, remote_domain_resume_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_shutdown_args (XDR *xdrs, remote_domain_shutdown_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_reboot_args (XDR *xdrs, remote_domain_reboot_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_int (xdrs, &objp->flags)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_destroy_args (XDR *xdrs, remote_domain_destroy_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_os_type_args (XDR *xdrs, remote_domain_get_os_type_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_os_type_ret (XDR *xdrs, remote_domain_get_os_type_ret *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->type)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_max_memory_args (XDR *xdrs, remote_domain_get_max_memory_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_max_memory_ret (XDR *xdrs, remote_domain_get_max_memory_ret *objp) +{ + + if (!xdr_u_quad_t (xdrs, &objp->memory)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_set_max_memory_args (XDR *xdrs, remote_domain_set_max_memory_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_u_quad_t (xdrs, &objp->memory)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_set_memory_args (XDR *xdrs, remote_domain_set_memory_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_u_quad_t (xdrs, &objp->memory)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_info_args (XDR *xdrs, remote_domain_get_info_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_info_ret (XDR *xdrs, remote_domain_get_info_ret *objp) +{ + + if (!xdr_u_char (xdrs, &objp->state)) + return FALSE; + if (!xdr_u_quad_t (xdrs, &objp->max_mem)) + return FALSE; + if (!xdr_u_quad_t (xdrs, &objp->memory)) + return FALSE; + if (!xdr_u_short (xdrs, &objp->nr_virt_cpu)) + return FALSE; + if (!xdr_u_quad_t (xdrs, &objp->cpu_time)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_save_args (XDR *xdrs, remote_domain_save_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_remote_nonnull_string (xdrs, &objp->to)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_restore_args (XDR *xdrs, remote_domain_restore_args *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->from)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_core_dump_args (XDR *xdrs, remote_domain_core_dump_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_remote_nonnull_string (xdrs, &objp->to)) + return FALSE; + if (!xdr_int (xdrs, &objp->flags)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_dump_xml_args (XDR *xdrs, remote_domain_dump_xml_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_int (xdrs, &objp->flags)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_dump_xml_ret (XDR *xdrs, remote_domain_dump_xml_ret *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->xml)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_list_defined_domains_args (XDR *xdrs, remote_list_defined_domains_args *objp) +{ + + if (!xdr_int (xdrs, &objp->maxnames)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_list_defined_domains_ret (XDR *xdrs, remote_list_defined_domains_ret *objp) +{ + char **objp_cpp0 = (char **) (void *) &objp->names.names_val; + + if (!xdr_array (xdrs, objp_cpp0, (u_int *) &objp->names.names_len, REMOTE_DOMAIN_NAME_LIST_MAX, + sizeof (remote_nonnull_string), (xdrproc_t) xdr_remote_nonnull_string)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_num_of_defined_domains_ret (XDR *xdrs, remote_num_of_defined_domains_ret *objp) +{ + + if (!xdr_int (xdrs, &objp->num)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_create_args (XDR *xdrs, remote_domain_create_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_define_xml_args (XDR *xdrs, remote_domain_define_xml_args *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->xml)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_define_xml_ret (XDR *xdrs, remote_domain_define_xml_ret *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_undefine_args (XDR *xdrs, remote_domain_undefine_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_set_vcpus_args (XDR *xdrs, remote_domain_set_vcpus_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_int (xdrs, &objp->nvcpus)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_pin_vcpu_args (XDR *xdrs, remote_domain_pin_vcpu_args *objp) +{ + char **objp_cpp0 = (char **) (void *) &objp->cpumap.cpumap_val; + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_int (xdrs, &objp->vcpu)) + return FALSE; + if (!xdr_bytes (xdrs, objp_cpp0, (u_int *) &objp->cpumap.cpumap_len, REMOTE_CPUMAP_MAX)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_vcpus_args (XDR *xdrs, remote_domain_get_vcpus_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_int (xdrs, &objp->maxinfo)) + return FALSE; + if (!xdr_int (xdrs, &objp->maplen)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_vcpus_ret (XDR *xdrs, remote_domain_get_vcpus_ret *objp) +{ + char **objp_cpp0 = (char **) (void *) &objp->info.info_val; + char **objp_cpp1 = (char **) (void *) &objp->cpumaps.cpumaps_val; + + if (!xdr_array (xdrs, objp_cpp0, (u_int *) &objp->info.info_len, REMOTE_VCPUINFO_MAX, + sizeof (remote_vcpu_info), (xdrproc_t) xdr_remote_vcpu_info)) + return FALSE; + if (!xdr_bytes (xdrs, objp_cpp1, (u_int *) &objp->cpumaps.cpumaps_len, REMOTE_CPUMAPS_MAX)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_max_vcpus_args (XDR *xdrs, remote_domain_get_max_vcpus_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_max_vcpus_ret (XDR *xdrs, remote_domain_get_max_vcpus_ret *objp) +{ + + if (!xdr_int (xdrs, &objp->num)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_attach_device_args (XDR *xdrs, remote_domain_attach_device_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_remote_nonnull_string (xdrs, &objp->xml)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_detach_device_args (XDR *xdrs, remote_domain_detach_device_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_remote_nonnull_string (xdrs, &objp->xml)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_autostart_args (XDR *xdrs, remote_domain_get_autostart_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_get_autostart_ret (XDR *xdrs, remote_domain_get_autostart_ret *objp) +{ + + if (!xdr_int (xdrs, &objp->autostart)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_domain_set_autostart_args (XDR *xdrs, remote_domain_set_autostart_args *objp) +{ + + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) + return FALSE; + if (!xdr_int (xdrs, &objp->autostart)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_num_of_networks_ret (XDR *xdrs, remote_num_of_networks_ret *objp) +{ + + if (!xdr_int (xdrs, &objp->num)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_list_networks_args (XDR *xdrs, remote_list_networks_args *objp) +{ + + if (!xdr_int (xdrs, &objp->maxnames)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_list_networks_ret (XDR *xdrs, remote_list_networks_ret *objp) +{ + char **objp_cpp0 = (char **) (void *) &objp->names.names_val; + + if (!xdr_array (xdrs, objp_cpp0, (u_int *) &objp->names.names_len, REMOTE_NETWORK_NAME_LIST_MAX, + sizeof (remote_nonnull_string), (xdrproc_t) xdr_remote_nonnull_string)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_num_of_defined_networks_ret (XDR *xdrs, remote_num_of_defined_networks_ret *objp) +{ + + if (!xdr_int (xdrs, &objp->num)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_list_defined_networks_args (XDR *xdrs, remote_list_defined_networks_args *objp) +{ + + if (!xdr_int (xdrs, &objp->maxnames)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_list_defined_networks_ret (XDR *xdrs, remote_list_defined_networks_ret *objp) +{ + char **objp_cpp0 = (char **) (void *) &objp->names.names_val; + + if (!xdr_array (xdrs, objp_cpp0, (u_int *) &objp->names.names_len, REMOTE_NETWORK_NAME_LIST_MAX, + sizeof (remote_nonnull_string), (xdrproc_t) xdr_remote_nonnull_string)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_lookup_by_uuid_args (XDR *xdrs, remote_network_lookup_by_uuid_args *objp) +{ + + if (!xdr_remote_uuid (xdrs, objp->uuid)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_lookup_by_uuid_ret (XDR *xdrs, remote_network_lookup_by_uuid_ret *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_lookup_by_name_args (XDR *xdrs, remote_network_lookup_by_name_args *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->name)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_lookup_by_name_ret (XDR *xdrs, remote_network_lookup_by_name_ret *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_create_xml_args (XDR *xdrs, remote_network_create_xml_args *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->xml)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_create_xml_ret (XDR *xdrs, remote_network_create_xml_ret *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_define_xml_args (XDR *xdrs, remote_network_define_xml_args *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->xml)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_define_xml_ret (XDR *xdrs, remote_network_define_xml_ret *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_undefine_args (XDR *xdrs, remote_network_undefine_args *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_create_args (XDR *xdrs, remote_network_create_args *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_destroy_args (XDR *xdrs, remote_network_destroy_args *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_dump_xml_args (XDR *xdrs, remote_network_dump_xml_args *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + if (!xdr_int (xdrs, &objp->flags)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_dump_xml_ret (XDR *xdrs, remote_network_dump_xml_ret *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->xml)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_get_bridge_name_args (XDR *xdrs, remote_network_get_bridge_name_args *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_get_bridge_name_ret (XDR *xdrs, remote_network_get_bridge_name_ret *objp) +{ + + if (!xdr_remote_nonnull_string (xdrs, &objp->name)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_get_autostart_args (XDR *xdrs, remote_network_get_autostart_args *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_get_autostart_ret (XDR *xdrs, remote_network_get_autostart_ret *objp) +{ + + if (!xdr_int (xdrs, &objp->autostart)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_network_set_autostart_args (XDR *xdrs, remote_network_set_autostart_args *objp) +{ + + if (!xdr_remote_nonnull_network (xdrs, &objp->net)) + return FALSE; + if (!xdr_int (xdrs, &objp->autostart)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_procedure (XDR *xdrs, remote_procedure *objp) +{ + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_message_direction (XDR *xdrs, remote_message_direction *objp) +{ + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_message_status (XDR *xdrs, remote_message_status *objp) +{ + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + +bool_t +xdr_remote_message_header (XDR *xdrs, remote_message_header *objp) +{ + + if (!xdr_u_int (xdrs, &objp->prog)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->vers)) + return FALSE; + if (!xdr_remote_procedure (xdrs, &objp->proc)) + return FALSE; + if (!xdr_remote_message_direction (xdrs, &objp->direction)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->serial)) + return FALSE; + if (!xdr_remote_message_status (xdrs, &objp->status)) + return FALSE; + return TRUE; +} diff --git a/qemud/remote_protocol.h b/qemud/remote_protocol.h new file mode 100644 index 0000000000..1b009c26a8 --- /dev/null +++ b/qemud/remote_protocol.h @@ -0,0 +1,792 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#ifndef _REMOTE_PROTOCOL_H_RPCGEN +#define _REMOTE_PROTOCOL_H_RPCGEN + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "libvirt/libvirt.h" +#define REMOTE_MESSAGE_MAX 262144 +#define REMOTE_STRING_MAX 65536 + +typedef char *remote_nonnull_string; + +typedef remote_nonnull_string *remote_string; +#define REMOTE_DOMAIN_ID_LIST_MAX 16384 +#define REMOTE_DOMAIN_NAME_LIST_MAX 1024 +#define REMOTE_CPUMAP_MAX 256 +#define REMOTE_VCPUINFO_MAX 2048 +#define REMOTE_CPUMAPS_MAX 16384 +#define REMOTE_NETWORK_NAME_LIST_MAX 256 + +typedef char remote_uuid[VIR_UUID_BUFLEN]; + +struct remote_nonnull_domain { + remote_nonnull_string name; + remote_uuid uuid; + int id; +}; +typedef struct remote_nonnull_domain remote_nonnull_domain; + +struct remote_nonnull_network { + remote_nonnull_string name; + remote_uuid uuid; +}; +typedef struct remote_nonnull_network remote_nonnull_network; + +typedef remote_nonnull_domain *remote_domain; + +typedef remote_nonnull_network *remote_network; + +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; +}; +typedef struct remote_error remote_error; + +struct remote_vcpu_info { + u_int number; + int state; + u_quad_t cpu_time; + int cpu; +}; +typedef struct remote_vcpu_info remote_vcpu_info; + +struct remote_open_args { + remote_string name; + int flags; +}; +typedef struct remote_open_args remote_open_args; + +struct remote_get_type_ret { + remote_nonnull_string type; +}; +typedef struct remote_get_type_ret remote_get_type_ret; + +struct remote_get_version_ret { + quad_t hv_ver; +}; +typedef struct remote_get_version_ret remote_get_version_ret; + +struct remote_get_max_vcpus_args { + remote_string type; +}; +typedef struct remote_get_max_vcpus_args remote_get_max_vcpus_args; + +struct remote_get_max_vcpus_ret { + int max_vcpus; +}; +typedef struct remote_get_max_vcpus_ret remote_get_max_vcpus_ret; + +struct remote_node_get_info_ret { + char model[32]; + quad_t memory; + int cpus; + int mhz; + int nodes; + int sockets; + int cores; + int threads; +}; +typedef struct remote_node_get_info_ret remote_node_get_info_ret; + +struct remote_get_capabilities_ret { + remote_nonnull_string capabilities; +}; +typedef struct remote_get_capabilities_ret remote_get_capabilities_ret; + +struct remote_list_domains_args { + int maxids; +}; +typedef struct remote_list_domains_args remote_list_domains_args; + +struct remote_list_domains_ret { + struct { + u_int ids_len; + int *ids_val; + } ids; +}; +typedef struct remote_list_domains_ret remote_list_domains_ret; + +struct remote_num_of_domains_ret { + int num; +}; +typedef struct remote_num_of_domains_ret remote_num_of_domains_ret; + +struct remote_domain_create_linux_args { + remote_nonnull_string xml_desc; + int flags; +}; +typedef struct remote_domain_create_linux_args remote_domain_create_linux_args; + +struct remote_domain_create_linux_ret { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_create_linux_ret remote_domain_create_linux_ret; + +struct remote_domain_lookup_by_id_args { + int id; +}; +typedef struct remote_domain_lookup_by_id_args remote_domain_lookup_by_id_args; + +struct remote_domain_lookup_by_id_ret { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_lookup_by_id_ret remote_domain_lookup_by_id_ret; + +struct remote_domain_lookup_by_uuid_args { + remote_uuid uuid; +}; +typedef struct remote_domain_lookup_by_uuid_args remote_domain_lookup_by_uuid_args; + +struct remote_domain_lookup_by_uuid_ret { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_lookup_by_uuid_ret remote_domain_lookup_by_uuid_ret; + +struct remote_domain_lookup_by_name_args { + remote_nonnull_string name; +}; +typedef struct remote_domain_lookup_by_name_args remote_domain_lookup_by_name_args; + +struct remote_domain_lookup_by_name_ret { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_lookup_by_name_ret remote_domain_lookup_by_name_ret; + +struct remote_domain_suspend_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_suspend_args remote_domain_suspend_args; + +struct remote_domain_resume_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_resume_args remote_domain_resume_args; + +struct remote_domain_shutdown_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_shutdown_args remote_domain_shutdown_args; + +struct remote_domain_reboot_args { + remote_nonnull_domain dom; + int flags; +}; +typedef struct remote_domain_reboot_args remote_domain_reboot_args; + +struct remote_domain_destroy_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_destroy_args remote_domain_destroy_args; + +struct remote_domain_get_os_type_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_get_os_type_args remote_domain_get_os_type_args; + +struct remote_domain_get_os_type_ret { + remote_nonnull_string type; +}; +typedef struct remote_domain_get_os_type_ret remote_domain_get_os_type_ret; + +struct remote_domain_get_max_memory_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_get_max_memory_args remote_domain_get_max_memory_args; + +struct remote_domain_get_max_memory_ret { + u_quad_t memory; +}; +typedef struct remote_domain_get_max_memory_ret remote_domain_get_max_memory_ret; + +struct remote_domain_set_max_memory_args { + remote_nonnull_domain dom; + u_quad_t memory; +}; +typedef struct remote_domain_set_max_memory_args remote_domain_set_max_memory_args; + +struct remote_domain_set_memory_args { + remote_nonnull_domain dom; + u_quad_t memory; +}; +typedef struct remote_domain_set_memory_args remote_domain_set_memory_args; + +struct remote_domain_get_info_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_get_info_args remote_domain_get_info_args; + +struct remote_domain_get_info_ret { + u_char state; + u_quad_t max_mem; + u_quad_t memory; + u_short nr_virt_cpu; + u_quad_t cpu_time; +}; +typedef struct remote_domain_get_info_ret remote_domain_get_info_ret; + +struct remote_domain_save_args { + remote_nonnull_domain dom; + remote_nonnull_string to; +}; +typedef struct remote_domain_save_args remote_domain_save_args; + +struct remote_domain_restore_args { + remote_nonnull_string from; +}; +typedef struct remote_domain_restore_args remote_domain_restore_args; + +struct remote_domain_core_dump_args { + remote_nonnull_domain dom; + remote_nonnull_string to; + int flags; +}; +typedef struct remote_domain_core_dump_args remote_domain_core_dump_args; + +struct remote_domain_dump_xml_args { + remote_nonnull_domain dom; + int flags; +}; +typedef struct remote_domain_dump_xml_args remote_domain_dump_xml_args; + +struct remote_domain_dump_xml_ret { + remote_nonnull_string xml; +}; +typedef struct remote_domain_dump_xml_ret remote_domain_dump_xml_ret; + +struct remote_list_defined_domains_args { + int maxnames; +}; +typedef struct remote_list_defined_domains_args remote_list_defined_domains_args; + +struct remote_list_defined_domains_ret { + struct { + u_int names_len; + remote_nonnull_string *names_val; + } names; +}; +typedef struct remote_list_defined_domains_ret remote_list_defined_domains_ret; + +struct remote_num_of_defined_domains_ret { + int num; +}; +typedef struct remote_num_of_defined_domains_ret remote_num_of_defined_domains_ret; + +struct remote_domain_create_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_create_args remote_domain_create_args; + +struct remote_domain_define_xml_args { + remote_nonnull_string xml; +}; +typedef struct remote_domain_define_xml_args remote_domain_define_xml_args; + +struct remote_domain_define_xml_ret { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_define_xml_ret remote_domain_define_xml_ret; + +struct remote_domain_undefine_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_undefine_args remote_domain_undefine_args; + +struct remote_domain_set_vcpus_args { + remote_nonnull_domain dom; + int nvcpus; +}; +typedef struct remote_domain_set_vcpus_args remote_domain_set_vcpus_args; + +struct remote_domain_pin_vcpu_args { + remote_nonnull_domain dom; + int vcpu; + struct { + u_int cpumap_len; + char *cpumap_val; + } cpumap; +}; +typedef struct remote_domain_pin_vcpu_args remote_domain_pin_vcpu_args; + +struct remote_domain_get_vcpus_args { + remote_nonnull_domain dom; + int maxinfo; + int maplen; +}; +typedef struct remote_domain_get_vcpus_args remote_domain_get_vcpus_args; + +struct remote_domain_get_vcpus_ret { + struct { + u_int info_len; + remote_vcpu_info *info_val; + } info; + struct { + u_int cpumaps_len; + char *cpumaps_val; + } cpumaps; +}; +typedef struct remote_domain_get_vcpus_ret remote_domain_get_vcpus_ret; + +struct remote_domain_get_max_vcpus_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_get_max_vcpus_args remote_domain_get_max_vcpus_args; + +struct remote_domain_get_max_vcpus_ret { + int num; +}; +typedef struct remote_domain_get_max_vcpus_ret remote_domain_get_max_vcpus_ret; + +struct remote_domain_attach_device_args { + remote_nonnull_domain dom; + remote_nonnull_string xml; +}; +typedef struct remote_domain_attach_device_args remote_domain_attach_device_args; + +struct remote_domain_detach_device_args { + remote_nonnull_domain dom; + remote_nonnull_string xml; +}; +typedef struct remote_domain_detach_device_args remote_domain_detach_device_args; + +struct remote_domain_get_autostart_args { + remote_nonnull_domain dom; +}; +typedef struct remote_domain_get_autostart_args remote_domain_get_autostart_args; + +struct remote_domain_get_autostart_ret { + int autostart; +}; +typedef struct remote_domain_get_autostart_ret remote_domain_get_autostart_ret; + +struct remote_domain_set_autostart_args { + remote_nonnull_domain dom; + int autostart; +}; +typedef struct remote_domain_set_autostart_args remote_domain_set_autostart_args; + +struct remote_num_of_networks_ret { + int num; +}; +typedef struct remote_num_of_networks_ret remote_num_of_networks_ret; + +struct remote_list_networks_args { + int maxnames; +}; +typedef struct remote_list_networks_args remote_list_networks_args; + +struct remote_list_networks_ret { + struct { + u_int names_len; + remote_nonnull_string *names_val; + } names; +}; +typedef struct remote_list_networks_ret remote_list_networks_ret; + +struct remote_num_of_defined_networks_ret { + int num; +}; +typedef struct remote_num_of_defined_networks_ret remote_num_of_defined_networks_ret; + +struct remote_list_defined_networks_args { + int maxnames; +}; +typedef struct remote_list_defined_networks_args remote_list_defined_networks_args; + +struct remote_list_defined_networks_ret { + struct { + u_int names_len; + remote_nonnull_string *names_val; + } names; +}; +typedef struct remote_list_defined_networks_ret remote_list_defined_networks_ret; + +struct remote_network_lookup_by_uuid_args { + remote_uuid uuid; +}; +typedef struct remote_network_lookup_by_uuid_args remote_network_lookup_by_uuid_args; + +struct remote_network_lookup_by_uuid_ret { + remote_nonnull_network net; +}; +typedef struct remote_network_lookup_by_uuid_ret remote_network_lookup_by_uuid_ret; + +struct remote_network_lookup_by_name_args { + remote_nonnull_string name; +}; +typedef struct remote_network_lookup_by_name_args remote_network_lookup_by_name_args; + +struct remote_network_lookup_by_name_ret { + remote_nonnull_network net; +}; +typedef struct remote_network_lookup_by_name_ret remote_network_lookup_by_name_ret; + +struct remote_network_create_xml_args { + remote_nonnull_string xml; +}; +typedef struct remote_network_create_xml_args remote_network_create_xml_args; + +struct remote_network_create_xml_ret { + remote_nonnull_network net; +}; +typedef struct remote_network_create_xml_ret remote_network_create_xml_ret; + +struct remote_network_define_xml_args { + remote_nonnull_string xml; +}; +typedef struct remote_network_define_xml_args remote_network_define_xml_args; + +struct remote_network_define_xml_ret { + remote_nonnull_network net; +}; +typedef struct remote_network_define_xml_ret remote_network_define_xml_ret; + +struct remote_network_undefine_args { + remote_nonnull_network net; +}; +typedef struct remote_network_undefine_args remote_network_undefine_args; + +struct remote_network_create_args { + remote_nonnull_network net; +}; +typedef struct remote_network_create_args remote_network_create_args; + +struct remote_network_destroy_args { + remote_nonnull_network net; +}; +typedef struct remote_network_destroy_args remote_network_destroy_args; + +struct remote_network_dump_xml_args { + remote_nonnull_network net; + int flags; +}; +typedef struct remote_network_dump_xml_args remote_network_dump_xml_args; + +struct remote_network_dump_xml_ret { + remote_nonnull_string xml; +}; +typedef struct remote_network_dump_xml_ret remote_network_dump_xml_ret; + +struct remote_network_get_bridge_name_args { + remote_nonnull_network net; +}; +typedef struct remote_network_get_bridge_name_args remote_network_get_bridge_name_args; + +struct remote_network_get_bridge_name_ret { + remote_nonnull_string name; +}; +typedef struct remote_network_get_bridge_name_ret remote_network_get_bridge_name_ret; + +struct remote_network_get_autostart_args { + remote_nonnull_network net; +}; +typedef struct remote_network_get_autostart_args remote_network_get_autostart_args; + +struct remote_network_get_autostart_ret { + int autostart; +}; +typedef struct remote_network_get_autostart_ret remote_network_get_autostart_ret; + +struct remote_network_set_autostart_args { + remote_nonnull_network net; + int autostart; +}; +typedef struct remote_network_set_autostart_args remote_network_set_autostart_args; +#define REMOTE_PROGRAM 0x20008086 +#define REMOTE_PROTOCOL_VERSION 1 + +enum remote_procedure { + REMOTE_PROC_OPEN = 1, + REMOTE_PROC_CLOSE = 2, + REMOTE_PROC_GET_TYPE = 3, + REMOTE_PROC_GET_VERSION = 4, + REMOTE_PROC_GET_MAX_VCPUS = 5, + REMOTE_PROC_NODE_GET_INFO = 6, + REMOTE_PROC_GET_CAPABILITIES = 7, + REMOTE_PROC_DOMAIN_ATTACH_DEVICE = 8, + REMOTE_PROC_DOMAIN_CREATE = 9, + REMOTE_PROC_DOMAIN_CREATE_LINUX = 10, + REMOTE_PROC_DOMAIN_DEFINE_XML = 11, + REMOTE_PROC_DOMAIN_DESTROY = 12, + REMOTE_PROC_DOMAIN_DETACH_DEVICE = 13, + REMOTE_PROC_DOMAIN_DUMP_XML = 14, + REMOTE_PROC_DOMAIN_GET_AUTOSTART = 15, + REMOTE_PROC_DOMAIN_GET_INFO = 16, + REMOTE_PROC_DOMAIN_GET_MAX_MEMORY = 17, + REMOTE_PROC_DOMAIN_GET_MAX_VCPUS = 18, + REMOTE_PROC_DOMAIN_GET_OS_TYPE = 19, + REMOTE_PROC_DOMAIN_GET_VCPUS = 20, + REMOTE_PROC_LIST_DEFINED_DOMAINS = 21, + REMOTE_PROC_DOMAIN_LOOKUP_BY_ID = 22, + REMOTE_PROC_DOMAIN_LOOKUP_BY_NAME = 23, + REMOTE_PROC_DOMAIN_LOOKUP_BY_UUID = 24, + REMOTE_PROC_NUM_OF_DEFINED_DOMAINS = 25, + REMOTE_PROC_DOMAIN_PIN_VCPU = 26, + REMOTE_PROC_DOMAIN_REBOOT = 27, + REMOTE_PROC_DOMAIN_RESUME = 28, + REMOTE_PROC_DOMAIN_SET_AUTOSTART = 29, + REMOTE_PROC_DOMAIN_SET_MAX_MEMORY = 30, + REMOTE_PROC_DOMAIN_SET_MEMORY = 31, + REMOTE_PROC_DOMAIN_SET_VCPUS = 32, + REMOTE_PROC_DOMAIN_SHUTDOWN = 33, + REMOTE_PROC_DOMAIN_SUSPEND = 34, + REMOTE_PROC_DOMAIN_UNDEFINE = 35, + REMOTE_PROC_LIST_DEFINED_NETWORKS = 36, + REMOTE_PROC_LIST_DOMAINS = 37, + REMOTE_PROC_LIST_NETWORKS = 38, + REMOTE_PROC_NETWORK_CREATE = 39, + REMOTE_PROC_NETWORK_CREATE_XML = 40, + REMOTE_PROC_NETWORK_DEFINE_XML = 41, + REMOTE_PROC_NETWORK_DESTROY = 42, + REMOTE_PROC_NETWORK_DUMP_XML = 43, + REMOTE_PROC_NETWORK_GET_AUTOSTART = 44, + REMOTE_PROC_NETWORK_GET_BRIDGE_NAME = 45, + REMOTE_PROC_NETWORK_LOOKUP_BY_NAME = 46, + REMOTE_PROC_NETWORK_LOOKUP_BY_UUID = 47, + REMOTE_PROC_NETWORK_SET_AUTOSTART = 48, + REMOTE_PROC_NETWORK_UNDEFINE = 49, + REMOTE_PROC_NUM_OF_DEFINED_NETWORKS = 50, + REMOTE_PROC_NUM_OF_DOMAINS = 51, + REMOTE_PROC_NUM_OF_NETWORKS = 52, + REMOTE_PROC_DOMAIN_CORE_DUMP = 53, + REMOTE_PROC_DOMAIN_RESTORE = 54, + REMOTE_PROC_DOMAIN_SAVE = 55, +}; +typedef enum remote_procedure remote_procedure; + +enum remote_message_direction { + REMOTE_CALL = 0, + REMOTE_REPLY = 1, + REMOTE_MESSAGE = 2, +}; +typedef enum remote_message_direction remote_message_direction; + +enum remote_message_status { + REMOTE_OK = 0, + REMOTE_ERROR = 1, +}; +typedef enum remote_message_status remote_message_status; + +struct remote_message_header { + u_int prog; + u_int vers; + remote_procedure proc; + remote_message_direction direction; + u_int serial; + remote_message_status status; +}; +typedef struct remote_message_header remote_message_header; + +/* the xdr functions */ + +#if defined(__STDC__) || defined(__cplusplus) +extern bool_t xdr_remote_nonnull_string (XDR *, remote_nonnull_string*); +extern bool_t xdr_remote_string (XDR *, remote_string*); +extern bool_t xdr_remote_uuid (XDR *, remote_uuid); +extern bool_t xdr_remote_nonnull_domain (XDR *, remote_nonnull_domain*); +extern bool_t xdr_remote_nonnull_network (XDR *, remote_nonnull_network*); +extern bool_t xdr_remote_domain (XDR *, remote_domain*); +extern bool_t xdr_remote_network (XDR *, remote_network*); +extern bool_t xdr_remote_error (XDR *, remote_error*); +extern bool_t xdr_remote_vcpu_info (XDR *, remote_vcpu_info*); +extern bool_t xdr_remote_open_args (XDR *, remote_open_args*); +extern bool_t xdr_remote_get_type_ret (XDR *, remote_get_type_ret*); +extern bool_t xdr_remote_get_version_ret (XDR *, remote_get_version_ret*); +extern bool_t xdr_remote_get_max_vcpus_args (XDR *, remote_get_max_vcpus_args*); +extern bool_t xdr_remote_get_max_vcpus_ret (XDR *, remote_get_max_vcpus_ret*); +extern bool_t xdr_remote_node_get_info_ret (XDR *, remote_node_get_info_ret*); +extern bool_t xdr_remote_get_capabilities_ret (XDR *, remote_get_capabilities_ret*); +extern bool_t xdr_remote_list_domains_args (XDR *, remote_list_domains_args*); +extern bool_t xdr_remote_list_domains_ret (XDR *, remote_list_domains_ret*); +extern bool_t xdr_remote_num_of_domains_ret (XDR *, remote_num_of_domains_ret*); +extern bool_t xdr_remote_domain_create_linux_args (XDR *, remote_domain_create_linux_args*); +extern bool_t xdr_remote_domain_create_linux_ret (XDR *, remote_domain_create_linux_ret*); +extern bool_t xdr_remote_domain_lookup_by_id_args (XDR *, remote_domain_lookup_by_id_args*); +extern bool_t xdr_remote_domain_lookup_by_id_ret (XDR *, remote_domain_lookup_by_id_ret*); +extern bool_t xdr_remote_domain_lookup_by_uuid_args (XDR *, remote_domain_lookup_by_uuid_args*); +extern bool_t xdr_remote_domain_lookup_by_uuid_ret (XDR *, remote_domain_lookup_by_uuid_ret*); +extern bool_t xdr_remote_domain_lookup_by_name_args (XDR *, remote_domain_lookup_by_name_args*); +extern bool_t xdr_remote_domain_lookup_by_name_ret (XDR *, remote_domain_lookup_by_name_ret*); +extern bool_t xdr_remote_domain_suspend_args (XDR *, remote_domain_suspend_args*); +extern bool_t xdr_remote_domain_resume_args (XDR *, remote_domain_resume_args*); +extern bool_t xdr_remote_domain_shutdown_args (XDR *, remote_domain_shutdown_args*); +extern bool_t xdr_remote_domain_reboot_args (XDR *, remote_domain_reboot_args*); +extern bool_t xdr_remote_domain_destroy_args (XDR *, remote_domain_destroy_args*); +extern bool_t xdr_remote_domain_get_os_type_args (XDR *, remote_domain_get_os_type_args*); +extern bool_t xdr_remote_domain_get_os_type_ret (XDR *, remote_domain_get_os_type_ret*); +extern bool_t xdr_remote_domain_get_max_memory_args (XDR *, remote_domain_get_max_memory_args*); +extern bool_t xdr_remote_domain_get_max_memory_ret (XDR *, remote_domain_get_max_memory_ret*); +extern bool_t xdr_remote_domain_set_max_memory_args (XDR *, remote_domain_set_max_memory_args*); +extern bool_t xdr_remote_domain_set_memory_args (XDR *, remote_domain_set_memory_args*); +extern bool_t xdr_remote_domain_get_info_args (XDR *, remote_domain_get_info_args*); +extern bool_t xdr_remote_domain_get_info_ret (XDR *, remote_domain_get_info_ret*); +extern bool_t xdr_remote_domain_save_args (XDR *, remote_domain_save_args*); +extern bool_t xdr_remote_domain_restore_args (XDR *, remote_domain_restore_args*); +extern bool_t xdr_remote_domain_core_dump_args (XDR *, remote_domain_core_dump_args*); +extern bool_t xdr_remote_domain_dump_xml_args (XDR *, remote_domain_dump_xml_args*); +extern bool_t xdr_remote_domain_dump_xml_ret (XDR *, remote_domain_dump_xml_ret*); +extern bool_t xdr_remote_list_defined_domains_args (XDR *, remote_list_defined_domains_args*); +extern bool_t xdr_remote_list_defined_domains_ret (XDR *, remote_list_defined_domains_ret*); +extern bool_t xdr_remote_num_of_defined_domains_ret (XDR *, remote_num_of_defined_domains_ret*); +extern bool_t xdr_remote_domain_create_args (XDR *, remote_domain_create_args*); +extern bool_t xdr_remote_domain_define_xml_args (XDR *, remote_domain_define_xml_args*); +extern bool_t xdr_remote_domain_define_xml_ret (XDR *, remote_domain_define_xml_ret*); +extern bool_t xdr_remote_domain_undefine_args (XDR *, remote_domain_undefine_args*); +extern bool_t xdr_remote_domain_set_vcpus_args (XDR *, remote_domain_set_vcpus_args*); +extern bool_t xdr_remote_domain_pin_vcpu_args (XDR *, remote_domain_pin_vcpu_args*); +extern bool_t xdr_remote_domain_get_vcpus_args (XDR *, remote_domain_get_vcpus_args*); +extern bool_t xdr_remote_domain_get_vcpus_ret (XDR *, remote_domain_get_vcpus_ret*); +extern bool_t xdr_remote_domain_get_max_vcpus_args (XDR *, remote_domain_get_max_vcpus_args*); +extern bool_t xdr_remote_domain_get_max_vcpus_ret (XDR *, remote_domain_get_max_vcpus_ret*); +extern bool_t xdr_remote_domain_attach_device_args (XDR *, remote_domain_attach_device_args*); +extern bool_t xdr_remote_domain_detach_device_args (XDR *, remote_domain_detach_device_args*); +extern bool_t xdr_remote_domain_get_autostart_args (XDR *, remote_domain_get_autostart_args*); +extern bool_t xdr_remote_domain_get_autostart_ret (XDR *, remote_domain_get_autostart_ret*); +extern bool_t xdr_remote_domain_set_autostart_args (XDR *, remote_domain_set_autostart_args*); +extern bool_t xdr_remote_num_of_networks_ret (XDR *, remote_num_of_networks_ret*); +extern bool_t xdr_remote_list_networks_args (XDR *, remote_list_networks_args*); +extern bool_t xdr_remote_list_networks_ret (XDR *, remote_list_networks_ret*); +extern bool_t xdr_remote_num_of_defined_networks_ret (XDR *, remote_num_of_defined_networks_ret*); +extern bool_t xdr_remote_list_defined_networks_args (XDR *, remote_list_defined_networks_args*); +extern bool_t xdr_remote_list_defined_networks_ret (XDR *, remote_list_defined_networks_ret*); +extern bool_t xdr_remote_network_lookup_by_uuid_args (XDR *, remote_network_lookup_by_uuid_args*); +extern bool_t xdr_remote_network_lookup_by_uuid_ret (XDR *, remote_network_lookup_by_uuid_ret*); +extern bool_t xdr_remote_network_lookup_by_name_args (XDR *, remote_network_lookup_by_name_args*); +extern bool_t xdr_remote_network_lookup_by_name_ret (XDR *, remote_network_lookup_by_name_ret*); +extern bool_t xdr_remote_network_create_xml_args (XDR *, remote_network_create_xml_args*); +extern bool_t xdr_remote_network_create_xml_ret (XDR *, remote_network_create_xml_ret*); +extern bool_t xdr_remote_network_define_xml_args (XDR *, remote_network_define_xml_args*); +extern bool_t xdr_remote_network_define_xml_ret (XDR *, remote_network_define_xml_ret*); +extern bool_t xdr_remote_network_undefine_args (XDR *, remote_network_undefine_args*); +extern bool_t xdr_remote_network_create_args (XDR *, remote_network_create_args*); +extern bool_t xdr_remote_network_destroy_args (XDR *, remote_network_destroy_args*); +extern bool_t xdr_remote_network_dump_xml_args (XDR *, remote_network_dump_xml_args*); +extern bool_t xdr_remote_network_dump_xml_ret (XDR *, remote_network_dump_xml_ret*); +extern bool_t xdr_remote_network_get_bridge_name_args (XDR *, remote_network_get_bridge_name_args*); +extern bool_t xdr_remote_network_get_bridge_name_ret (XDR *, remote_network_get_bridge_name_ret*); +extern bool_t xdr_remote_network_get_autostart_args (XDR *, remote_network_get_autostart_args*); +extern bool_t xdr_remote_network_get_autostart_ret (XDR *, remote_network_get_autostart_ret*); +extern bool_t xdr_remote_network_set_autostart_args (XDR *, remote_network_set_autostart_args*); +extern bool_t xdr_remote_procedure (XDR *, remote_procedure*); +extern bool_t xdr_remote_message_direction (XDR *, remote_message_direction*); +extern bool_t xdr_remote_message_status (XDR *, remote_message_status*); +extern bool_t xdr_remote_message_header (XDR *, remote_message_header*); + +#else /* K&R C */ +extern bool_t xdr_remote_nonnull_string (); +extern bool_t xdr_remote_string (); +extern bool_t xdr_remote_uuid (); +extern bool_t xdr_remote_nonnull_domain (); +extern bool_t xdr_remote_nonnull_network (); +extern bool_t xdr_remote_domain (); +extern bool_t xdr_remote_network (); +extern bool_t xdr_remote_error (); +extern bool_t xdr_remote_vcpu_info (); +extern bool_t xdr_remote_open_args (); +extern bool_t xdr_remote_get_type_ret (); +extern bool_t xdr_remote_get_version_ret (); +extern bool_t xdr_remote_get_max_vcpus_args (); +extern bool_t xdr_remote_get_max_vcpus_ret (); +extern bool_t xdr_remote_node_get_info_ret (); +extern bool_t xdr_remote_get_capabilities_ret (); +extern bool_t xdr_remote_list_domains_args (); +extern bool_t xdr_remote_list_domains_ret (); +extern bool_t xdr_remote_num_of_domains_ret (); +extern bool_t xdr_remote_domain_create_linux_args (); +extern bool_t xdr_remote_domain_create_linux_ret (); +extern bool_t xdr_remote_domain_lookup_by_id_args (); +extern bool_t xdr_remote_domain_lookup_by_id_ret (); +extern bool_t xdr_remote_domain_lookup_by_uuid_args (); +extern bool_t xdr_remote_domain_lookup_by_uuid_ret (); +extern bool_t xdr_remote_domain_lookup_by_name_args (); +extern bool_t xdr_remote_domain_lookup_by_name_ret (); +extern bool_t xdr_remote_domain_suspend_args (); +extern bool_t xdr_remote_domain_resume_args (); +extern bool_t xdr_remote_domain_shutdown_args (); +extern bool_t xdr_remote_domain_reboot_args (); +extern bool_t xdr_remote_domain_destroy_args (); +extern bool_t xdr_remote_domain_get_os_type_args (); +extern bool_t xdr_remote_domain_get_os_type_ret (); +extern bool_t xdr_remote_domain_get_max_memory_args (); +extern bool_t xdr_remote_domain_get_max_memory_ret (); +extern bool_t xdr_remote_domain_set_max_memory_args (); +extern bool_t xdr_remote_domain_set_memory_args (); +extern bool_t xdr_remote_domain_get_info_args (); +extern bool_t xdr_remote_domain_get_info_ret (); +extern bool_t xdr_remote_domain_save_args (); +extern bool_t xdr_remote_domain_restore_args (); +extern bool_t xdr_remote_domain_core_dump_args (); +extern bool_t xdr_remote_domain_dump_xml_args (); +extern bool_t xdr_remote_domain_dump_xml_ret (); +extern bool_t xdr_remote_list_defined_domains_args (); +extern bool_t xdr_remote_list_defined_domains_ret (); +extern bool_t xdr_remote_num_of_defined_domains_ret (); +extern bool_t xdr_remote_domain_create_args (); +extern bool_t xdr_remote_domain_define_xml_args (); +extern bool_t xdr_remote_domain_define_xml_ret (); +extern bool_t xdr_remote_domain_undefine_args (); +extern bool_t xdr_remote_domain_set_vcpus_args (); +extern bool_t xdr_remote_domain_pin_vcpu_args (); +extern bool_t xdr_remote_domain_get_vcpus_args (); +extern bool_t xdr_remote_domain_get_vcpus_ret (); +extern bool_t xdr_remote_domain_get_max_vcpus_args (); +extern bool_t xdr_remote_domain_get_max_vcpus_ret (); +extern bool_t xdr_remote_domain_attach_device_args (); +extern bool_t xdr_remote_domain_detach_device_args (); +extern bool_t xdr_remote_domain_get_autostart_args (); +extern bool_t xdr_remote_domain_get_autostart_ret (); +extern bool_t xdr_remote_domain_set_autostart_args (); +extern bool_t xdr_remote_num_of_networks_ret (); +extern bool_t xdr_remote_list_networks_args (); +extern bool_t xdr_remote_list_networks_ret (); +extern bool_t xdr_remote_num_of_defined_networks_ret (); +extern bool_t xdr_remote_list_defined_networks_args (); +extern bool_t xdr_remote_list_defined_networks_ret (); +extern bool_t xdr_remote_network_lookup_by_uuid_args (); +extern bool_t xdr_remote_network_lookup_by_uuid_ret (); +extern bool_t xdr_remote_network_lookup_by_name_args (); +extern bool_t xdr_remote_network_lookup_by_name_ret (); +extern bool_t xdr_remote_network_create_xml_args (); +extern bool_t xdr_remote_network_create_xml_ret (); +extern bool_t xdr_remote_network_define_xml_args (); +extern bool_t xdr_remote_network_define_xml_ret (); +extern bool_t xdr_remote_network_undefine_args (); +extern bool_t xdr_remote_network_create_args (); +extern bool_t xdr_remote_network_destroy_args (); +extern bool_t xdr_remote_network_dump_xml_args (); +extern bool_t xdr_remote_network_dump_xml_ret (); +extern bool_t xdr_remote_network_get_bridge_name_args (); +extern bool_t xdr_remote_network_get_bridge_name_ret (); +extern bool_t xdr_remote_network_get_autostart_args (); +extern bool_t xdr_remote_network_get_autostart_ret (); +extern bool_t xdr_remote_network_set_autostart_args (); +extern bool_t xdr_remote_procedure (); +extern bool_t xdr_remote_message_direction (); +extern bool_t xdr_remote_message_status (); +extern bool_t xdr_remote_message_header (); + +#endif /* K&R C */ + +#ifdef __cplusplus +} +#endif + +#endif /* !_REMOTE_PROTOCOL_H_RPCGEN */ diff --git a/qemud/remote_protocol.x b/qemud/remote_protocol.x new file mode 100644 index 0000000000..1496ac8cb2 --- /dev/null +++ b/qemud/remote_protocol.x @@ -0,0 +1,612 @@ +/* -*- 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-2007 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * 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 "libvirt/libvirt.h" + +/*----- Data types. -----*/ + +/* Maximum total message size (serialised). */ +const REMOTE_MESSAGE_MAX = 262144; + +/* 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 = 65536; + +/* 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; + +/* This just places an upper limit on the length of lists of + * domain IDs which may be sent via the protocol. + */ +const REMOTE_DOMAIN_ID_LIST_MAX = 16384; + +/* Upper limit on lists of domain names. */ +const REMOTE_DOMAIN_NAME_LIST_MAX = 1024; + +/* Upper limit on cpumap (bytes) passed to virDomainPinVcpu. */ +const REMOTE_CPUMAP_MAX = 256; + +/* Upper limit on number of info fields returned by virDomainGetVcpus. */ +const REMOTE_VCPUINFO_MAX = 2048; + +/* Upper limit on cpumaps (bytes) passed to virDomainGetVcpus. */ +const REMOTE_CPUMAPS_MAX = 16384; + +/* Upper limit on lists of network names. */ +const REMOTE_NETWORK_NAME_LIST_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 domain or network which may be NULL. */ +typedef remote_nonnull_domain *remote_domain; +typedef remote_nonnull_network *remote_network; + +/* 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; +}; + +/* Wire encoding of virVcpuInfo. */ +struct remote_vcpu_info { + unsigned int number; + int state; + unsigned hyper cpu_time; + int cpu; +}; + +/*----- 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 'remote_generate_stubs.pl'. + */ + +struct remote_open_args { + /* NB. "name" might be NULL although in practice you can't + * yet do that using the remote_internal driver. + */ + remote_string name; + int flags; +}; + +struct remote_get_type_ret { + remote_nonnull_string type; +}; + +struct remote_get_version_ret { + hyper hv_ver; +}; + +struct remote_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_get_max_vcpus_ret { + int max_vcpus; +}; + +struct remote_node_get_info_ret { + char model[32]; + hyper memory; + int cpus; + int mhz; + int nodes; + int sockets; + int cores; + int threads; +}; + +struct remote_get_capabilities_ret { + remote_nonnull_string capabilities; +}; + +struct remote_list_domains_args { + int maxids; +}; + +struct remote_list_domains_ret { + int ids; +}; + +struct remote_num_of_domains_ret { + int num; +}; + +struct remote_domain_create_linux_args { + remote_nonnull_string xml_desc; + int flags; +}; + +struct remote_domain_create_linux_ret { + remote_nonnull_domain dom; +}; + +struct remote_domain_lookup_by_id_args { + int id; +}; + +struct remote_domain_lookup_by_id_ret { + /* XXX "Not found" semantic is ill-defined. */ + remote_nonnull_domain dom; +}; + +struct remote_domain_lookup_by_uuid_args { + remote_uuid uuid; +}; + +struct remote_domain_lookup_by_uuid_ret { + /* XXX "Not found" semantic is ill-defined. */ + remote_nonnull_domain dom; +}; + +struct remote_domain_lookup_by_name_args { + remote_nonnull_string name; +}; + +struct remote_domain_lookup_by_name_ret { + /* XXX "Not found" semantic is ill-defined. */ + 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_shutdown_args { + remote_nonnull_domain dom; +}; + +struct remote_domain_reboot_args { + remote_nonnull_domain dom; + int flags; +}; + +struct remote_domain_destroy_args { + remote_nonnull_domain dom; +}; + +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_get_info_args { + remote_nonnull_domain dom; +}; + +struct remote_domain_get_info_ret { + unsigned char state; + unsigned hyper max_mem; + unsigned hyper memory; + unsigned short nr_virt_cpu; + unsigned hyper cpu_time; +}; + +struct remote_domain_save_args { + remote_nonnull_domain dom; + remote_nonnull_string to; +}; + +struct remote_domain_restore_args { + remote_nonnull_string from; +}; + +struct remote_domain_core_dump_args { + remote_nonnull_domain dom; + remote_nonnull_string to; + int flags; +}; + +struct remote_domain_dump_xml_args { + remote_nonnull_domain dom; + int flags; +}; + +struct remote_domain_dump_xml_ret { + remote_nonnull_string xml; +}; + +struct remote_list_defined_domains_args { + int maxnames; +}; + +struct remote_list_defined_domains_ret { + remote_nonnull_string names; +}; + +struct remote_num_of_defined_domains_ret { + int num; +}; + +struct remote_domain_create_args { + 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_undefine_args { + remote_nonnull_domain dom; +}; + +struct remote_domain_set_vcpus_args { + remote_nonnull_domain dom; + int nvcpus; +}; + +struct remote_domain_pin_vcpu_args { + remote_nonnull_domain dom; + int vcpu; + opaque cpumap; +}; + +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_attach_device_args { + remote_nonnull_domain dom; + remote_nonnull_string xml; +}; + +struct remote_domain_detach_device_args { + remote_nonnull_domain dom; + remote_nonnull_string xml; +}; + +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; +}; + +/* Network calls: */ + +struct remote_num_of_networks_ret { + int num; +}; + +struct remote_list_networks_args { + int maxnames; +}; + +struct remote_list_networks_ret { + remote_nonnull_string names; +}; + +struct remote_num_of_defined_networks_ret { + int num; +}; + +struct remote_list_defined_networks_args { + int maxnames; +}; + +struct remote_list_defined_networks_ret { + remote_nonnull_string names; +}; + +struct remote_network_lookup_by_uuid_args { + remote_uuid uuid; +}; + +struct remote_network_lookup_by_uuid_ret { + /* XXX "Not found" semantic is ill-defined. */ + remote_nonnull_network net; +}; + +struct remote_network_lookup_by_name_args { + remote_nonnull_string name; +}; + +struct remote_network_lookup_by_name_ret { + /* XXX "Not found" semantic is ill-defined. */ + 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_create_args { + remote_nonnull_network net; +}; + +struct remote_network_destroy_args { + remote_nonnull_network net; +}; + +struct remote_network_dump_xml_args { + remote_nonnull_network net; + int flags; +}; + +struct remote_network_dump_xml_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; +}; + +/*----- Protocol. -----*/ + +/* Define the program number, protocol version and procedure numbers here. */ +const REMOTE_PROGRAM = 0x20008086; +const REMOTE_PROTOCOL_VERSION = 1; + +enum remote_procedure { + REMOTE_PROC_OPEN = 1, + REMOTE_PROC_CLOSE = 2, + REMOTE_PROC_GET_TYPE = 3, + REMOTE_PROC_GET_VERSION = 4, + REMOTE_PROC_GET_MAX_VCPUS = 5, + REMOTE_PROC_NODE_GET_INFO = 6, + REMOTE_PROC_GET_CAPABILITIES = 7, + REMOTE_PROC_DOMAIN_ATTACH_DEVICE = 8, + REMOTE_PROC_DOMAIN_CREATE = 9, + REMOTE_PROC_DOMAIN_CREATE_LINUX = 10, + REMOTE_PROC_DOMAIN_DEFINE_XML = 11, + REMOTE_PROC_DOMAIN_DESTROY = 12, + REMOTE_PROC_DOMAIN_DETACH_DEVICE = 13, + REMOTE_PROC_DOMAIN_DUMP_XML = 14, + REMOTE_PROC_DOMAIN_GET_AUTOSTART = 15, + REMOTE_PROC_DOMAIN_GET_INFO = 16, + REMOTE_PROC_DOMAIN_GET_MAX_MEMORY = 17, + REMOTE_PROC_DOMAIN_GET_MAX_VCPUS = 18, + REMOTE_PROC_DOMAIN_GET_OS_TYPE = 19, + REMOTE_PROC_DOMAIN_GET_VCPUS = 20, + REMOTE_PROC_LIST_DEFINED_DOMAINS = 21, + REMOTE_PROC_DOMAIN_LOOKUP_BY_ID = 22, + REMOTE_PROC_DOMAIN_LOOKUP_BY_NAME = 23, + REMOTE_PROC_DOMAIN_LOOKUP_BY_UUID = 24, + REMOTE_PROC_NUM_OF_DEFINED_DOMAINS = 25, + REMOTE_PROC_DOMAIN_PIN_VCPU = 26, + REMOTE_PROC_DOMAIN_REBOOT = 27, + REMOTE_PROC_DOMAIN_RESUME = 28, + REMOTE_PROC_DOMAIN_SET_AUTOSTART = 29, + REMOTE_PROC_DOMAIN_SET_MAX_MEMORY = 30, + REMOTE_PROC_DOMAIN_SET_MEMORY = 31, + REMOTE_PROC_DOMAIN_SET_VCPUS = 32, + REMOTE_PROC_DOMAIN_SHUTDOWN = 33, + REMOTE_PROC_DOMAIN_SUSPEND = 34, + REMOTE_PROC_DOMAIN_UNDEFINE = 35, + REMOTE_PROC_LIST_DEFINED_NETWORKS = 36, + REMOTE_PROC_LIST_DOMAINS = 37, + REMOTE_PROC_LIST_NETWORKS = 38, + REMOTE_PROC_NETWORK_CREATE = 39, + REMOTE_PROC_NETWORK_CREATE_XML = 40, + REMOTE_PROC_NETWORK_DEFINE_XML = 41, + REMOTE_PROC_NETWORK_DESTROY = 42, + REMOTE_PROC_NETWORK_DUMP_XML = 43, + REMOTE_PROC_NETWORK_GET_AUTOSTART = 44, + REMOTE_PROC_NETWORK_GET_BRIDGE_NAME = 45, + REMOTE_PROC_NETWORK_LOOKUP_BY_NAME = 46, + REMOTE_PROC_NETWORK_LOOKUP_BY_UUID = 47, + REMOTE_PROC_NETWORK_SET_AUTOSTART = 48, + REMOTE_PROC_NETWORK_UNDEFINE = 49, + REMOTE_PROC_NUM_OF_DEFINED_NETWORKS = 50, + REMOTE_PROC_NUM_OF_DOMAINS = 51, + REMOTE_PROC_NUM_OF_NETWORKS = 52, + REMOTE_PROC_DOMAIN_CORE_DUMP = 53, + REMOTE_PROC_DOMAIN_RESTORE = 54, + REMOTE_PROC_DOMAIN_SAVE = 55 +}; + +/* Custom RPC structure. */ +/* Each message consists of: + * int length Number of bytes in message _including_ length. + * remote_message_header Header. + * then either: args Arguments (for REMOTE_CALL). + * or: ret Return (for REMOTE_REPLY, status = REMOTE_OK) + * or: remote_error Error (for REMOTE_REPLY, status = REMOTE_ERROR) + * + * The first two words (length, program number) are meant to be compatible + * with the qemud protocol (qemud/protocol.x), although the rest of the + * messages are completely different. + */ + +enum remote_message_direction { + REMOTE_CALL = 0, /* client -> server */ + REMOTE_REPLY = 1, /* server -> client */ + REMOTE_MESSAGE = 2 /* server -> client, asynchronous [NYI] */ +}; + +enum remote_message_status { + /* Status is always REMOTE_OK for calls. + * For replies, indicates no error. + */ + REMOTE_OK = 0, + + /* For replies, indicates that an error happened, and a struct + * remote_error follows. + */ + REMOTE_ERROR = 1 +}; + +struct remote_message_header { + unsigned prog; /* REMOTE_PROGRAM */ + unsigned vers; /* REMOTE_PROTOCOL_VERSION */ + remote_procedure proc; /* REMOTE_PROC_x */ + remote_message_direction direction; + unsigned serial; /* Serial number of message. */ + remote_message_status status; +}; + + +/* + * vim: set tabstop=4: + * vim: set shiftwidth=4: + * vim: set expandtab: + */ +/* + * Local variables: + * indent-tabs-mode: nil + * c-indent-level: 4 + * c-basic-offset: 4 + * tab-width: 4 + * End: + */ diff --git a/qemud/rpcgen_fix.pl b/qemud/rpcgen_fix.pl new file mode 100644 index 0000000000..0f3e22b1c3 --- /dev/null +++ b/qemud/rpcgen_fix.pl @@ -0,0 +1,80 @@ +# Fix XDR code (generated by rpcgen) so that it compiles +# with warnings turned on. +# +# This code is evil. Arguably better would be just to compile +# without -Werror. Update: The IXDR_PUT_LONG replacements are +# actually fixes for 64 bit, so this file is necessary. Arguably +# so is the type-punning fix. +# +# Copyright (C) 2007 Red Hat, Inc. +# +# See COPYING for the license of this software. +# +# Richard Jones + +use strict; + +my $in_function = 0; +my @function = (); + +while (<>) { + if (m/^{/) { + $in_function = 1; + print; + next; + } + + if (m/^}/) { + $in_function = 0; + + # Note: The body of the function is in @function. + + # Remove decl of buf, if buf isn't used in the function. + my @uses = grep /\bbuf\b/, @function; + @function = grep !/\bbuf\b/, @function if @uses == 1; + + # Remove decl of i, if i isn't used in the function. + @uses = grep /\bi\b/, @function; + @function = grep !/\bi\b/, @function if @uses == 1; + + # (char **)&objp->... gives: + # warning: dereferencing type-punned pointer will break + # strict-aliasing rules + # so rewrite it. + my %uses = (); + my $i = 0; + foreach (@function) { + $uses{$1} = $i++ if m/\(char \*\*\)\&(objp->[a-z_.]+_val)/; + } + if (keys %uses >= 1) { + my $i = 1; + + foreach (keys %uses) { + $i = $uses{$_}; + unshift @function, + ("\tchar **objp_cpp$i = (char **) (void *) &$_;\n"); + $i++; + } + @function = + map { s{\(char \*\*\)\&(objp->[a-z_.]+_val)} + {objp_cpp$uses{$1}}g; $_ } @function; + } + + # The code uses 'IXDR_PUT_{U_,}LONG' but it's wrong in two + # ways: Firstly these functions are deprecated and don't + # work on 64 bit platforms. Secondly the return value should + # be ignored. Correct both these mistakes. + @function = + map { s/\bIXDR_PUT_((U_)?)LONG\b/(void)IXDR_PUT_$1INT32/; $_ } + @function; + + print (join ("", @function)); + @function = (); + } + + unless ($in_function) { + print; + } else { + push @function, $_; + } +} -- GitLab