]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Mon Jun 11 12:34:00 BST 2007 Richard W.M. Jones <rjones@redhat.com>
authorRichard W.M. Jones <rjones@redhat.com>
Mon, 11 Jun 2007 11:36:17 +0000 (11:36 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Mon, 11 Jun 2007 11:36:17 +0000 (11:36 +0000)
* qemud/remote_protocol.x qemud/rpcgen_fix.pl
  qemud/remote_protocol.c qemud/remote_protocol.h: Client/server
  protocol used by remote.

ChangeLog
qemud/remote_protocol.c [new file with mode: 0644]
qemud/remote_protocol.h [new file with mode: 0644]
qemud/remote_protocol.x [new file with mode: 0644]
qemud/rpcgen_fix.pl [new file with mode: 0644]

index 3ac2b3493fc7c7de22b9ca2f855915d6e03c8ffa..4f2f456882000342bf4bc7c5a3a90bb2248cad66 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Jun 11 12:34:00 BST 2007 Richard W.M. Jones <rjones@redhat.com>
+
+       * 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 <veillard@redhat.com>
 
        * 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 (file)
index 0000000..1bf6157
--- /dev/null
@@ -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 (file)
index 0000000..1b009c2
--- /dev/null
@@ -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 <rpc/rpc.h>
+
+
+#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 (file)
index 0000000..1496ac8
--- /dev/null
@@ -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 <rjones@redhat.com>
+ */
+
+/* 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<REMOTE_STRING_MAX>;
+
+/* 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 <virterror.h> 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 <virterror.h> (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<REMOTE_DOMAIN_ID_LIST_MAX>;
+};
+
+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<REMOTE_DOMAIN_NAME_LIST_MAX>;
+};
+
+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<REMOTE_CPUMAP_MAX>;
+};
+
+struct remote_domain_get_vcpus_args {
+    remote_nonnull_domain dom;
+    int maxinfo;
+    int maplen;
+};
+
+struct remote_domain_get_vcpus_ret {
+    remote_vcpu_info info<REMOTE_VCPUINFO_MAX>;
+    opaque cpumaps<REMOTE_CPUMAPS_MAX>;
+};
+
+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<REMOTE_NETWORK_NAME_LIST_MAX>;
+};
+
+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<REMOTE_NETWORK_NAME_LIST_MAX>;
+};
+
+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 (file)
index 0000000..0f3e22b
--- /dev/null
@@ -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 <rjones@redhat.com>
+
+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, $_;
+    }
+}