[libvirt] [PATCH] Switch to a more extensible annotation system for RPC protocols

Daniel P. Berrange berrange at redhat.com
Wed Apr 17 15:43:43 UTC 2013


From: "Daniel P. Berrange" <berrange at redhat.com>

Currently the RPC protocol files can contain annotations after
the protocol enum eg

   REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_CHILDREN_NAMES = 247, /* autogen autogen priority:high */

This is not very extensible as the number of annotations grows.
Change it to use

    /**
     * @generate: both
     * @priority: high
     */
   REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_CHILDREN_NAMES = 247,

Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
---
 src/locking/lock_protocol.x  |   68 +-
 src/remote/lxc_protocol.x    |   39 +-
 src/remote/qemu_protocol.x   |   51 +-
 src/remote/remote_protocol.x | 1832 +++++++++++++++++++++++++++++++++---------
 src/rpc/gendispatch.pl       |   67 +-
 5 files changed, 1638 insertions(+), 419 deletions(-)

diff --git a/src/locking/lock_protocol.x b/src/locking/lock_protocol.x
index 5f40f9a..aef928e 100644
--- a/src/locking/lock_protocol.x
+++ b/src/locking/lock_protocol.x
@@ -77,19 +77,63 @@ const VIR_LOCK_SPACE_PROTOCOL_PROGRAM = 0xEA7BEEF;
 const VIR_LOCK_SPACE_PROTOCOL_PROGRAM_VERSION = 1;
 
 enum virLockSpaceProtocolProcedure {
-    /* Each function must have a two-word comment.  The first word is
-     * whether remote_generator.pl handles daemon, the second whether
-     * it handles src/remote.  Additional flags can be specified after a
-     * pipe.
+    /* Each function must be preceeded by a comment providing one or
+     * more annotations:
+     *
+     * - @generate: none|client|server|both
+     *
+     *   Whether to generate the dispatch stubs for the server
+     *   and/or client code.
+     *
+     * - @readstream: paramnumber
+     * - @writestream: paramnumber
+     *
+     *   The @readstream or @writestream annotations let daemon and src/remote
+     *   create a stream.  The direction is defined from the src/remote point
+     *   of view.  A readstream transfers data from daemon to src/remote.  The
+     *   <paramnumber> specifies at which offset the stream parameter is inserted
+     *   in the function parameter list.
+     *
+     * - @priority: low|high
+     *
+     *   Each API that might eventually access hypervisor's  monitor (and thus
+     *   block) MUST fall into low priority. However, there are some exceptions
+     *   to this rule, e.g. domainDestroy. Other APIs MAY  be marked as high
+     *   priority. If in doubt, it's safe to choose low. Low is taken as default,
+     *   and thus can be left out.
      */
-    VIR_LOCK_SPACE_PROTOCOL_PROC_REGISTER = 1, /* skipgen skipgen */
-    VIR_LOCK_SPACE_PROTOCOL_PROC_RESTRICT = 2, /* skipgen skipgen */
-    VIR_LOCK_SPACE_PROTOCOL_PROC_NEW = 3, /* skipgen skipgen */
-    VIR_LOCK_SPACE_PROTOCOL_PROC_CREATE_RESOURCE = 4, /* skipgen skipgen */
-    VIR_LOCK_SPACE_PROTOCOL_PROC_DELETE_RESOURCE = 5, /* skipgen skipgen */
+    /**
+     * @generate: none
+     */
+    VIR_LOCK_SPACE_PROTOCOL_PROC_REGISTER = 1,
+    /**
+     * @generate: none
+     */
+    VIR_LOCK_SPACE_PROTOCOL_PROC_RESTRICT = 2,
+    /**
+     * @generate: none
+     */
+    VIR_LOCK_SPACE_PROTOCOL_PROC_NEW = 3,
+    /**
+     * @generate: none
+     */
+    VIR_LOCK_SPACE_PROTOCOL_PROC_CREATE_RESOURCE = 4,
+    /**
+     * @generate: none
+     */
+    VIR_LOCK_SPACE_PROTOCOL_PROC_DELETE_RESOURCE = 5,
 
-    VIR_LOCK_SPACE_PROTOCOL_PROC_ACQUIRE_RESOURCE = 6, /* skipgen skipgen */
-    VIR_LOCK_SPACE_PROTOCOL_PROC_RELEASE_RESOURCE = 7, /* skipgen skipgen */
+    /**
+     * @generate: none
+     */
+    VIR_LOCK_SPACE_PROTOCOL_PROC_ACQUIRE_RESOURCE = 6,
+    /**
+     * @generate: none
+     */
+    VIR_LOCK_SPACE_PROTOCOL_PROC_RELEASE_RESOURCE = 7,
 
-    VIR_LOCK_SPACE_PROTOCOL_PROC_CREATE_LOCKSPACE = 8 /* skipgen skipgen */
+    /**
+     * @generate: none
+     */
+    VIR_LOCK_SPACE_PROTOCOL_PROC_CREATE_LOCKSPACE = 8
 };
diff --git a/src/remote/lxc_protocol.x b/src/remote/lxc_protocol.x
index 1453f89..020fcba 100644
--- a/src/remote/lxc_protocol.x
+++ b/src/remote/lxc_protocol.x
@@ -37,13 +37,34 @@ const LXC_PROGRAM = 0x00068000;
 const LXC_PROTOCOL_VERSION = 1;
 
 enum lxc_procedure {
-    /* Each function must have a three-word comment.  The first word is
-     * whether gendispatch.pl handles daemon, the second whether
-     * it handles src/remote.
-     * The last argument describes priority of API. There are two accepted
-     * values: low, high; Each API that might eventually access hypervisor's
-     * monitor (and thus block) MUST fall into low priority. However, there
-     * are some exceptions to this rule, e.g. domainDestroy. Other APIs MAY
-     * be marked as high priority. If in doubt, it's safe to choose low. */
-    LXC_PROC_DOMAIN_OPEN_NAMESPACE = 1 /* skipgen skipgen priority:low */
+    /* Each function must be preceeded by a comment providing one or
+     * more annotations:
+     *
+     * - @generate: none|client|server|both
+     *
+     *   Whether to generate the dispatch stubs for the server
+     *   and/or client code.
+     *
+     * - @readstream: paramnumber
+     * - @writestream: paramnumber
+     *
+     *   The @readstream or @writestream annotations let daemon and src/remote
+     *   create a stream.  The direction is defined from the src/remote point
+     *   of view.  A readstream transfers data from daemon to src/remote.  The
+     *   <paramnumber> specifies at which offset the stream parameter is inserted
+     *   in the function parameter list.
+     *
+     * - @priority: low|high
+     *
+     *   Each API that might eventually access hypervisor's  monitor (and thus
+     *   block) MUST fall into low priority. However, there are some exceptions
+     *   to this rule, e.g. domainDestroy. Other APIs MAY  be marked as high
+     *   priority. If in doubt, it's safe to choose low. Low is taken as default,
+     *   and thus can be left out.
+     */
+    /**
+     * @generate: none
+     * @priority: low
+     */
+    LXC_PROC_DOMAIN_OPEN_NAMESPACE = 1
 };
diff --git a/src/remote/qemu_protocol.x b/src/remote/qemu_protocol.x
index d555cbb..e284180 100644
--- a/src/remote/qemu_protocol.x
+++ b/src/remote/qemu_protocol.x
@@ -63,15 +63,44 @@ const QEMU_PROGRAM = 0x20008087;
 const QEMU_PROTOCOL_VERSION = 1;
 
 enum qemu_procedure {
-    /* Each function must have a three-word comment.  The first word is
-     * whether gendispatch.pl handles daemon, the second whether
-     * it handles src/remote.
-     * The last argument describes priority of API. There are two accepted
-     * values: low, high; Each API that might eventually access hypervisor's
-     * monitor (and thus block) MUST fall into low priority. However, there
-     * are some exceptions to this rule, e.g. domainDestroy. Other APIs MAY
-     * be marked as high priority. If in doubt, it's safe to choose low. */
-    QEMU_PROC_MONITOR_COMMAND = 1, /* skipgen skipgen priority:low */
-    QEMU_PROC_DOMAIN_ATTACH = 2, /* autogen autogen priority:low */
-    QEMU_PROC_DOMAIN_AGENT_COMMAND = 3 /* autogen autogen priority:low */
+    /* Each function must be preceeded by a comment providing one or
+     * more annotations:
+     *
+     * - @generate: none|client|server|both
+     *
+     *   Whether to generate the dispatch stubs for the server
+     *   and/or client code.
+     *
+     * - @readstream: paramnumber
+     * - @writestream: paramnumber
+     *
+     *   The @readstream or @writestream annotations let daemon and src/remote
+     *   create a stream.  The direction is defined from the src/remote point
+     *   of view.  A readstream transfers data from daemon to src/remote.  The
+     *   <paramnumber> specifies at which offset the stream parameter is inserted
+     *   in the function parameter list.
+     *
+     * - @priority: low|high
+     *
+     *   Each API that might eventually access hypervisor's  monitor (and thus
+     *   block) MUST fall into low priority. However, there are some exceptions
+     *   to this rule, e.g. domainDestroy. Other APIs MAY  be marked as high
+     *   priority. If in doubt, it's safe to choose low. Low is taken as default,
+     *   and thus can be left out.
+     */
+    /**
+     * @generate: none
+     * @priority: low
+     */
+    QEMU_PROC_MONITOR_COMMAND = 1,
+    /**
+     * @generate: both
+     * @priority: low
+     */
+    QEMU_PROC_DOMAIN_ATTACH = 2,
+    /**
+     * @generate: both
+     * @priority: low
+     */
+    QEMU_PROC_DOMAIN_AGENT_COMMAND = 3
 };
diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
index d384225..d1f5a4f 100644
--- a/src/remote/remote_protocol.x
+++ b/src/remote/remote_protocol.x
@@ -1921,7 +1921,7 @@ struct remote_node_device_destroy_args {
 };
 
 
-/**
+/*
  * Events Register/Deregister:
  * It would seem rpcgen does not like both args, and ret
  * to be null. It will not generate the prototype otherwise.
@@ -2744,370 +2744,1478 @@ const REMOTE_PROGRAM = 0x20008086;
 const REMOTE_PROTOCOL_VERSION = 1;
 
 enum remote_procedure {
-    /* Each function must have a three-word comment.  The first word is
-     * whether gendispatch.pl handles daemon, the second whether
-     * it handles src/remote.  Additional flags can be specified after a
-     * pipe.
-     * The last argument describes priority of API. There are two accepted
-     * values: low, high; Each API that might eventually access hypervisor's
-     * monitor (and thus block) MUST fall into low priority. However, there
-     * are some exceptions to this rule, e.g. domainDestroy. Other APIs MAY
-     * be marked as high priority. If in doubt, it's safe to choose low.
-     * Low is taken as default, and thus can be left out.
+    /* Each function must be preceeded by a comment providing one or
+     * more annotations:
+     *
+     * - @generate: none|client|server|both
+     *
+     *   Whether to generate the dispatch stubs for the server
+     *   and/or client code.
+     *
+     * - @readstream: paramnumber
+     * - @writestream: paramnumber
      *
-     * The (readstream|writestream)@<offset> flag lets daemon and src/remote
-     * create a stream.  The direction is defined from the src/remote point
-     * of view.  A readstream transfers data from daemon to src/remote.  The
-     * <offset> specifies at which offset the stream parameter is inserted
-     * in the function parameter list. */
-    REMOTE_PROC_OPEN = 1, /* skipgen skipgen priority:high */
-    REMOTE_PROC_CLOSE = 2, /* skipgen skipgen priority:high */
-    REMOTE_PROC_GET_TYPE = 3, /* autogen skipgen priority:high */
-    REMOTE_PROC_GET_VERSION = 4, /* autogen autogen priority:high */
-    REMOTE_PROC_GET_MAX_VCPUS = 5, /* autogen autogen priority:high */
-    REMOTE_PROC_NODE_GET_INFO = 6, /* autogen autogen priority:high */
-    REMOTE_PROC_GET_CAPABILITIES = 7, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_ATTACH_DEVICE = 8, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_CREATE = 9, /* autogen skipgen */
-    REMOTE_PROC_DOMAIN_CREATE_XML = 10, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_DEFINE_XML = 11, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_DESTROY = 12, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_DETACH_DEVICE = 13, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_XML_DESC = 14, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_AUTOSTART = 15, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_GET_INFO = 16, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_MAX_MEMORY = 17, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_GET_MAX_VCPUS = 18, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_GET_OS_TYPE = 19, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_GET_VCPUS = 20, /* skipgen skipgen priority:high */
-
-    REMOTE_PROC_LIST_DEFINED_DOMAINS = 21, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_LOOKUP_BY_ID = 22, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_LOOKUP_BY_NAME = 23, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_LOOKUP_BY_UUID = 24, /* autogen autogen priority:high */
-    REMOTE_PROC_NUM_OF_DEFINED_DOMAINS = 25, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_PIN_VCPU = 26, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_REBOOT = 27, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_RESUME = 28, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SET_AUTOSTART = 29, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_SET_MAX_MEMORY = 30, /* autogen autogen priority:high */
-
-    REMOTE_PROC_DOMAIN_SET_MEMORY = 31, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SET_VCPUS = 32, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SHUTDOWN = 33, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SUSPEND = 34, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_UNDEFINE = 35, /* autogen autogen priority:high */
-    REMOTE_PROC_LIST_DEFINED_NETWORKS = 36, /* autogen autogen priority:high */
-    REMOTE_PROC_LIST_DOMAINS = 37, /* autogen skipgen priority:high */
-    REMOTE_PROC_LIST_NETWORKS = 38, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_CREATE = 39, /* autogen autogen */
-    REMOTE_PROC_NETWORK_CREATE_XML = 40, /* autogen autogen */
-
-    REMOTE_PROC_NETWORK_DEFINE_XML = 41, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_DESTROY = 42, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_GET_XML_DESC = 43, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_GET_AUTOSTART = 44, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_GET_BRIDGE_NAME = 45, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_LOOKUP_BY_NAME = 46, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_LOOKUP_BY_UUID = 47, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_SET_AUTOSTART = 48, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_UNDEFINE = 49, /* autogen autogen priority:high */
-    REMOTE_PROC_NUM_OF_DEFINED_NETWORKS = 50, /* autogen autogen priority:high */
-
-    REMOTE_PROC_NUM_OF_DOMAINS = 51, /* autogen autogen priority:high */
-    REMOTE_PROC_NUM_OF_NETWORKS = 52, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_CORE_DUMP = 53, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_RESTORE = 54, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SAVE = 55, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_SCHEDULER_TYPE = 56, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_GET_SCHEDULER_PARAMETERS = 57, /* skipgen autogen */
-    REMOTE_PROC_DOMAIN_SET_SCHEDULER_PARAMETERS = 58, /* autogen autogen */
-    REMOTE_PROC_GET_HOSTNAME = 59, /* autogen autogen priority:high */
-    REMOTE_PROC_SUPPORTS_FEATURE = 60, /* skipgen autogen priority:high */
-
-    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE = 61, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MIGRATE_PERFORM = 62, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_MIGRATE_FINISH = 63, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_BLOCK_STATS = 64, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_INTERFACE_STATS = 65, /* autogen autogen priority:high */
-    REMOTE_PROC_AUTH_LIST = 66, /* skipgen skipgen priority:high */
-    REMOTE_PROC_AUTH_SASL_INIT = 67, /* skipgen skipgen priority:high */
-    REMOTE_PROC_AUTH_SASL_START = 68, /* skipgen skipgen priority:high */
-    REMOTE_PROC_AUTH_SASL_STEP = 69, /* skipgen skipgen priority:high */
-    REMOTE_PROC_AUTH_POLKIT = 70, /* skipgen skipgen priority:high */
-
-    REMOTE_PROC_NUM_OF_STORAGE_POOLS = 71, /* autogen autogen priority:high */
-    REMOTE_PROC_LIST_STORAGE_POOLS = 72, /* autogen autogen priority:high */
-    REMOTE_PROC_NUM_OF_DEFINED_STORAGE_POOLS = 73, /* autogen autogen priority:high */
-    REMOTE_PROC_LIST_DEFINED_STORAGE_POOLS = 74, /* autogen autogen priority:high */
-    REMOTE_PROC_FIND_STORAGE_POOL_SOURCES = 75, /* autogen skipgen */
-    REMOTE_PROC_STORAGE_POOL_CREATE_XML = 76, /* autogen autogen */
-    REMOTE_PROC_STORAGE_POOL_DEFINE_XML = 77, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_CREATE = 78, /* autogen autogen */
-    REMOTE_PROC_STORAGE_POOL_BUILD = 79, /* autogen autogen */
-    REMOTE_PROC_STORAGE_POOL_DESTROY = 80, /* autogen autogen priority:high */
-
-    REMOTE_PROC_STORAGE_POOL_DELETE = 81, /* autogen autogen */
-    REMOTE_PROC_STORAGE_POOL_UNDEFINE = 82, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_REFRESH = 83, /* autogen autogen */
-    REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_NAME = 84, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_UUID = 85, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_VOLUME = 86, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_GET_INFO = 87, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_GET_XML_DESC = 88, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_GET_AUTOSTART = 89, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_SET_AUTOSTART = 90, /* autogen autogen priority:high */
-
-    REMOTE_PROC_STORAGE_POOL_NUM_OF_VOLUMES = 91, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_LIST_VOLUMES = 92, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_VOL_CREATE_XML = 93, /* autogen autogen */
-    REMOTE_PROC_STORAGE_VOL_DELETE = 94, /* autogen autogen */
-    REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_NAME = 95, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_KEY = 96, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_PATH = 97, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_VOL_GET_INFO = 98, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_VOL_GET_XML_DESC = 99, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_VOL_GET_PATH = 100, /* autogen autogen priority:high */
-
-    REMOTE_PROC_NODE_GET_CELLS_FREE_MEMORY = 101, /* autogen skipgen priority:high */
-    REMOTE_PROC_NODE_GET_FREE_MEMORY = 102, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_BLOCK_PEEK = 103, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MEMORY_PEEK = 104, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_EVENTS_REGISTER = 105, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_EVENTS_DEREGISTER = 106, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_EVENT_LIFECYCLE = 107, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE2 = 108, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MIGRATE_FINISH2 = 109, /* autogen autogen */
-    REMOTE_PROC_GET_URI = 110, /* autogen skipgen priority:high */
-
-    REMOTE_PROC_NODE_NUM_OF_DEVICES = 111, /* autogen autogen priority:high */
-    REMOTE_PROC_NODE_LIST_DEVICES = 112, /* autogen autogen priority:high */
-    REMOTE_PROC_NODE_DEVICE_LOOKUP_BY_NAME = 113, /* autogen autogen priority:high */
-    REMOTE_PROC_NODE_DEVICE_GET_XML_DESC = 114, /* autogen autogen */
-    REMOTE_PROC_NODE_DEVICE_GET_PARENT = 115, /* skipgen autogen priority:high */
-    REMOTE_PROC_NODE_DEVICE_NUM_OF_CAPS = 116, /* autogen autogen priority:high */
-    REMOTE_PROC_NODE_DEVICE_LIST_CAPS = 117, /* autogen autogen priority:high */
-    REMOTE_PROC_NODE_DEVICE_DETTACH = 118, /* autogen skipgen */
-    REMOTE_PROC_NODE_DEVICE_RE_ATTACH = 119, /* autogen skipgen */
-    REMOTE_PROC_NODE_DEVICE_RESET = 120, /* autogen skipgen */
-
-    REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL = 121, /* skipgen skipgen priority:high */
-    REMOTE_PROC_NODE_GET_SECURITY_MODEL = 122, /* skipgen skipgen priority:high */
-    REMOTE_PROC_NODE_DEVICE_CREATE_XML = 123, /* autogen autogen */
-    REMOTE_PROC_NODE_DEVICE_DESTROY = 124, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_VOL_CREATE_XML_FROM = 125, /* autogen autogen */
-    REMOTE_PROC_NUM_OF_INTERFACES = 126, /* autogen autogen priority:high */
-    REMOTE_PROC_LIST_INTERFACES = 127, /* autogen autogen priority:high */
-    REMOTE_PROC_INTERFACE_LOOKUP_BY_NAME = 128, /* autogen autogen priority:high */
-    REMOTE_PROC_INTERFACE_LOOKUP_BY_MAC_STRING = 129, /* autogen autogen priority:high */
-    REMOTE_PROC_INTERFACE_GET_XML_DESC = 130, /* autogen autogen */
-
-    REMOTE_PROC_INTERFACE_DEFINE_XML = 131, /* autogen autogen priority:high */
-    REMOTE_PROC_INTERFACE_UNDEFINE = 132, /* autogen autogen priority:high */
-    REMOTE_PROC_INTERFACE_CREATE = 133, /* autogen autogen */
-    REMOTE_PROC_INTERFACE_DESTROY = 134, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_XML_FROM_NATIVE = 135, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_XML_TO_NATIVE = 136, /* autogen autogen */
-    REMOTE_PROC_NUM_OF_DEFINED_INTERFACES = 137, /* autogen autogen priority:high */
-    REMOTE_PROC_LIST_DEFINED_INTERFACES = 138, /* autogen autogen priority:high */
-    REMOTE_PROC_NUM_OF_SECRETS = 139, /* autogen autogen priority:high */
-    REMOTE_PROC_LIST_SECRETS = 140, /* autogen autogen priority:high */
-
-    REMOTE_PROC_SECRET_LOOKUP_BY_UUID = 141, /* autogen autogen priority:high */
-    REMOTE_PROC_SECRET_DEFINE_XML = 142, /* autogen autogen priority:high */
-    REMOTE_PROC_SECRET_GET_XML_DESC = 143, /* autogen autogen priority:high */
-    REMOTE_PROC_SECRET_SET_VALUE = 144, /* autogen autogen priority:high */
-    REMOTE_PROC_SECRET_GET_VALUE = 145, /* skipgen skipgen priority:high */
-    REMOTE_PROC_SECRET_UNDEFINE = 146, /* autogen autogen priority:high */
-    REMOTE_PROC_SECRET_LOOKUP_BY_USAGE = 147, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL = 148, /* autogen autogen | writestream at 1 */
-    REMOTE_PROC_IS_SECURE = 149, /* autogen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_IS_ACTIVE = 150, /* autogen autogen priority:high */
-
-    REMOTE_PROC_DOMAIN_IS_PERSISTENT = 151, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_IS_ACTIVE = 152, /* autogen autogen priority:high */
-    REMOTE_PROC_NETWORK_IS_PERSISTENT = 153, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_IS_ACTIVE = 154, /* autogen autogen priority:high */
-    REMOTE_PROC_STORAGE_POOL_IS_PERSISTENT = 155, /* autogen autogen priority:high */
-    REMOTE_PROC_INTERFACE_IS_ACTIVE = 156, /* autogen autogen priority:high */
-    REMOTE_PROC_GET_LIB_VERSION = 157, /* autogen autogen priority:high */
-    REMOTE_PROC_CPU_COMPARE = 158, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_MEMORY_STATS = 159, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_ATTACH_DEVICE_FLAGS = 160, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_DETACH_DEVICE_FLAGS = 161, /* autogen autogen */
-    REMOTE_PROC_CPU_BASELINE = 162, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_JOB_INFO = 163, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_ABORT_JOB = 164, /* autogen autogen */
-    REMOTE_PROC_STORAGE_VOL_WIPE = 165, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_MIGRATE_SET_MAX_DOWNTIME = 166, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_EVENTS_REGISTER_ANY = 167, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_EVENTS_DEREGISTER_ANY = 168, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_EVENT_REBOOT = 169, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_EVENT_RTC_CHANGE = 170, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_EVENT_WATCHDOG = 171, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_EVENT_IO_ERROR = 172, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_EVENT_GRAPHICS = 173, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_UPDATE_DEVICE_FLAGS = 174, /* autogen autogen */
-    REMOTE_PROC_NWFILTER_LOOKUP_BY_NAME = 175, /* autogen autogen priority:high */
-    REMOTE_PROC_NWFILTER_LOOKUP_BY_UUID = 176, /* autogen autogen priority:high */
-    REMOTE_PROC_NWFILTER_GET_XML_DESC = 177, /* autogen autogen priority:high */
-    REMOTE_PROC_NUM_OF_NWFILTERS = 178, /* autogen autogen priority:high */
-    REMOTE_PROC_LIST_NWFILTERS = 179, /* autogen autogen priority:high */
-    REMOTE_PROC_NWFILTER_DEFINE_XML = 180, /* autogen autogen priority:high */
-
-    REMOTE_PROC_NWFILTER_UNDEFINE = 181, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_MANAGED_SAVE = 182, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_HAS_MANAGED_SAVE_IMAGE = 183, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_MANAGED_SAVE_REMOVE = 184, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_CREATE_XML = 185, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_GET_XML_DESC = 186, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_NUM = 187, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_NAMES = 188, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_LOOKUP_BY_NAME = 189, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_HAS_CURRENT_SNAPSHOT = 190, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_SNAPSHOT_CURRENT = 191, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_REVERT_TO_SNAPSHOT = 192, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_DELETE = 193, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_BLOCK_INFO = 194, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_EVENT_IO_ERROR_REASON = 195, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_CREATE_WITH_FLAGS = 196, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SET_MEMORY_PARAMETERS = 197, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_MEMORY_PARAMETERS = 198, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_SET_VCPUS_FLAGS = 199, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_VCPUS_FLAGS = 200, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_OPEN_CONSOLE = 201, /* autogen autogen | readstream at 2 */
-    REMOTE_PROC_DOMAIN_IS_UPDATED = 202, /* autogen autogen priority:high */
-    REMOTE_PROC_GET_SYSINFO = 203, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_SET_MEMORY_FLAGS = 204, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SET_BLKIO_PARAMETERS = 205, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_BLKIO_PARAMETERS = 206, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MIGRATE_SET_MAX_SPEED = 207, /* autogen autogen */
-    REMOTE_PROC_STORAGE_VOL_UPLOAD = 208, /* autogen autogen | writestream at 1 */
-    REMOTE_PROC_STORAGE_VOL_DOWNLOAD = 209, /* autogen autogen | readstream at 1 */
-    REMOTE_PROC_DOMAIN_INJECT_NMI = 210, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_SCREENSHOT = 211, /* autogen autogen | readstream at 1 */
-    REMOTE_PROC_DOMAIN_GET_STATE = 212, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_MIGRATE_BEGIN3 = 213, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE3 = 214, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL3 = 215, /* autogen skipgen | writestream at 1 */
-    REMOTE_PROC_DOMAIN_MIGRATE_PERFORM3 = 216, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MIGRATE_FINISH3 = 217, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MIGRATE_CONFIRM3 = 218, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_SET_SCHEDULER_PARAMETERS_FLAGS = 219, /* autogen autogen */
-    REMOTE_PROC_INTERFACE_CHANGE_BEGIN = 220, /* autogen autogen */
-
-    REMOTE_PROC_INTERFACE_CHANGE_COMMIT = 221, /* autogen autogen */
-    REMOTE_PROC_INTERFACE_CHANGE_ROLLBACK = 222, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_SCHEDULER_PARAMETERS_FLAGS = 223, /* skipgen autogen */
-    REMOTE_PROC_DOMAIN_EVENT_CONTROL_ERROR = 224, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_PIN_VCPU_FLAGS = 225, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SEND_KEY = 226, /* autogen autogen */
-    REMOTE_PROC_NODE_GET_CPU_STATS = 227, /* skipgen skipgen priority:high */
-    REMOTE_PROC_NODE_GET_MEMORY_STATS = 228, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_GET_CONTROL_INFO = 229, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_GET_VCPU_PIN_INFO = 230, /* skipgen skipgen */
-
-    REMOTE_PROC_DOMAIN_UNDEFINE_FLAGS = 231, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_SAVE_FLAGS = 232, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_RESTORE_FLAGS = 233, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_DESTROY_FLAGS = 234, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_SAVE_IMAGE_GET_XML_DESC = 235, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_SAVE_IMAGE_DEFINE_XML = 236, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_BLOCK_JOB_ABORT = 237, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_BLOCK_JOB_INFO = 238, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_BLOCK_JOB_SET_SPEED = 239, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_BLOCK_PULL = 240, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB = 241, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MIGRATE_GET_MAX_SPEED = 242, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_BLOCK_STATS_FLAGS = 243, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_GET_PARENT = 244, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_RESET = 245, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_NUM_CHILDREN = 246, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_CHILDREN_NAMES = 247, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_EVENT_DISK_CHANGE = 248, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_OPEN_GRAPHICS = 249, /* skipgen skipgen */
-    REMOTE_PROC_NODE_SUSPEND_FOR_DURATION = 250, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_BLOCK_RESIZE = 251, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SET_BLOCK_IO_TUNE = 252, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_BLOCK_IO_TUNE = 253, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_SET_NUMA_PARAMETERS = 254, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_NUMA_PARAMETERS = 255, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_SET_INTERFACE_PARAMETERS = 256, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_INTERFACE_PARAMETERS = 257, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_SHUTDOWN_FLAGS = 258, /* autogen autogen */
-    REMOTE_PROC_STORAGE_VOL_WIPE_PATTERN = 259, /* autogen autogen */
-    REMOTE_PROC_STORAGE_VOL_RESIZE = 260, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_PM_SUSPEND_FOR_DURATION = 261, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_CPU_STATS = 262, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_GET_DISK_ERRORS = 263, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_SET_METADATA = 264, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_METADATA = 265, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_BLOCK_REBASE = 266, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_PM_WAKEUP = 267, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_EVENT_TRAY_CHANGE = 268, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_EVENT_PMWAKEUP = 269, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_EVENT_PMSUSPEND = 270, /* autogen autogen */
-
-    REMOTE_PROC_DOMAIN_SNAPSHOT_IS_CURRENT = 271, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_HAS_METADATA = 272, /* autogen autogen */
-    REMOTE_PROC_CONNECT_LIST_ALL_DOMAINS = 273, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_LIST_ALL_SNAPSHOTS = 274, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_ALL_CHILDREN = 275, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_EVENT_BALLOON_CHANGE = 276, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_HOSTNAME = 277, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL_LIST = 278, /* skipgen skipgen priority:high */
-    REMOTE_PROC_DOMAIN_PIN_EMULATOR = 279, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_GET_EMULATOR_PIN_INFO = 280, /* skipgen skipgen */
-
-    REMOTE_PROC_CONNECT_LIST_ALL_STORAGE_POOLS = 281, /* skipgen skipgen priority:high */
-    REMOTE_PROC_STORAGE_POOL_LIST_ALL_VOLUMES = 282, /* skipgen skipgen priority:high */
-    REMOTE_PROC_CONNECT_LIST_ALL_NETWORKS = 283, /* skipgen skipgen priority:high */
-    REMOTE_PROC_CONNECT_LIST_ALL_INTERFACES = 284, /* skipgen skipgen priority:high */
-    REMOTE_PROC_CONNECT_LIST_ALL_NODE_DEVICES = 285, /* skipgen skipgen priority:high */
-    REMOTE_PROC_CONNECT_LIST_ALL_NWFILTERS = 286, /* skipgen skipgen priority:high */
-    REMOTE_PROC_CONNECT_LIST_ALL_SECRETS = 287, /* skipgen skipgen priority:high */
-    REMOTE_PROC_NODE_SET_MEMORY_PARAMETERS = 288, /* autogen autogen */
-    REMOTE_PROC_NODE_GET_MEMORY_PARAMETERS = 289, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_BLOCK_COMMIT = 290, /* autogen autogen */
-
-    REMOTE_PROC_NETWORK_UPDATE = 291, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_EVENT_PMSUSPEND_DISK = 292, /* autogen autogen */
-    REMOTE_PROC_NODE_GET_CPU_MAP = 293, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_FSTRIM = 294, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_SEND_PROCESS_SIGNAL = 295, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_OPEN_CHANNEL = 296, /* autogen autogen | readstream at 2 */
-    REMOTE_PROC_NODE_DEVICE_LOOKUP_SCSI_HOST_BY_WWN = 297, /* autogen autogen priority:high */
-    REMOTE_PROC_DOMAIN_GET_JOB_STATS = 298, /* skipgen skipgen */
-    REMOTE_PROC_DOMAIN_MIGRATE_GET_COMPRESSION_CACHE = 299, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_MIGRATE_SET_COMPRESSION_CACHE = 300 /* autogen autogen */
+     *   The @readstream or @writestream annotations let daemon and src/remote
+     *   create a stream.  The direction is defined from the src/remote point
+     *   of view.  A readstream transfers data from daemon to src/remote.  The
+     *   <paramnumber> specifies at which offset the stream parameter is inserted
+     *   in the function parameter list.
+     *
+     * - @priority: low|high
+     *
+     *   Each API that might eventually access hypervisor's  monitor (and thus
+     *   block) MUST fall into low priority. However, there are some exceptions
+     *   to this rule, e.g. domainDestroy. Other APIs MAY  be marked as high
+     *   priority. If in doubt, it's safe to choose low. Low is taken as default,
+     *   and thus can be left out.
+     */
+
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_OPEN = 1,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_CLOSE = 2,
+    /**
+     * @generate: server
+     * @priority: high
+     */
+    REMOTE_PROC_GET_TYPE = 3,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_GET_VERSION = 4,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_GET_MAX_VCPUS = 5,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_GET_INFO = 6,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_GET_CAPABILITIES = 7,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_ATTACH_DEVICE = 8,
+    /**
+     * @generate: server
+     */
+    REMOTE_PROC_DOMAIN_CREATE = 9,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_CREATE_XML = 10,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_DEFINE_XML = 11,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_DESTROY = 12,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_DETACH_DEVICE = 13,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_GET_XML_DESC = 14,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_GET_AUTOSTART = 15,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_GET_INFO = 16,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_GET_MAX_MEMORY = 17,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_GET_MAX_VCPUS = 18,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_GET_OS_TYPE = 19,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_GET_VCPUS = 20,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_DEFINED_DOMAINS = 21,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_LOOKUP_BY_ID = 22,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_LOOKUP_BY_NAME = 23,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_LOOKUP_BY_UUID = 24,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_DEFINED_DOMAINS = 25,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_PIN_VCPU = 26,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_REBOOT = 27,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_RESUME = 28,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SET_AUTOSTART = 29,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SET_MAX_MEMORY = 30,
+
+
+
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_MEMORY = 31,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_VCPUS = 32,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SHUTDOWN = 33,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SUSPEND = 34,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_UNDEFINE = 35,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_DEFINED_NETWORKS = 36,
+    /**
+     * @generate: server
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_DOMAINS = 37,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_NETWORKS = 38,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_NETWORK_CREATE = 39,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_NETWORK_CREATE_XML = 40,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_DEFINE_XML = 41,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_DESTROY = 42,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_GET_XML_DESC = 43,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_GET_AUTOSTART = 44,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_GET_BRIDGE_NAME = 45,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_LOOKUP_BY_NAME = 46,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_LOOKUP_BY_UUID = 47,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_SET_AUTOSTART = 48,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_UNDEFINE = 49,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_DEFINED_NETWORKS = 50,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_DOMAINS = 51,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_NETWORKS = 52,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_CORE_DUMP = 53,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_RESTORE = 54,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SAVE = 55,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_SCHEDULER_TYPE = 56,
+    /**
+     * @generate: client
+     */
+    REMOTE_PROC_DOMAIN_GET_SCHEDULER_PARAMETERS = 57,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_SCHEDULER_PARAMETERS = 58,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_GET_HOSTNAME = 59,
+    /**
+     * @generate: client
+     * @priority: high
+     */
+    REMOTE_PROC_SUPPORTS_FEATURE = 60,
+
+
+
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE = 61,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_PERFORM = 62,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_FINISH = 63,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_BLOCK_STATS = 64,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_INTERFACE_STATS = 65,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_AUTH_LIST = 66,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_AUTH_SASL_INIT = 67,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_AUTH_SASL_START = 68,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_AUTH_SASL_STEP = 69,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_AUTH_POLKIT = 70,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_STORAGE_POOLS = 71,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_STORAGE_POOLS = 72,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_DEFINED_STORAGE_POOLS = 73,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_DEFINED_STORAGE_POOLS = 74,
+    /**
+     * @generate: server
+     */
+    REMOTE_PROC_FIND_STORAGE_POOL_SOURCES = 75,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_POOL_CREATE_XML = 76,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_DEFINE_XML = 77,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_POOL_CREATE = 78,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_POOL_BUILD = 79,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_DESTROY = 80,
+
+
+
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_POOL_DELETE = 81,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_UNDEFINE = 82,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_POOL_REFRESH = 83,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_NAME = 84,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_UUID = 85,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_VOLUME = 86,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_GET_INFO = 87,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_GET_XML_DESC = 88,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_GET_AUTOSTART = 89,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_SET_AUTOSTART = 90,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_NUM_OF_VOLUMES = 91,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_LIST_VOLUMES = 92,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_VOL_CREATE_XML = 93,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_VOL_DELETE = 94,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_NAME = 95,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_KEY = 96,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_PATH = 97,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_VOL_GET_INFO = 98,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_VOL_GET_XML_DESC = 99,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_VOL_GET_PATH = 100,
+
+
+
+    /**
+     * @generate: server
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_GET_CELLS_FREE_MEMORY = 101,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_GET_FREE_MEMORY = 102,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_BLOCK_PEEK = 103,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_MEMORY_PEEK = 104,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_EVENTS_REGISTER = 105,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_EVENTS_DEREGISTER = 106,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_LIFECYCLE = 107,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE2 = 108,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_FINISH2 = 109,
+    /**
+     * @generate: server
+     * @priority: high
+     */
+    REMOTE_PROC_GET_URI = 110,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_NUM_OF_DEVICES = 111,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_LIST_DEVICES = 112,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_DEVICE_LOOKUP_BY_NAME = 113,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_NODE_DEVICE_GET_XML_DESC = 114,
+    /**
+     * @generate: client
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_DEVICE_GET_PARENT = 115,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_DEVICE_NUM_OF_CAPS = 116,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_DEVICE_LIST_CAPS = 117,
+    /**
+     * @generate: server
+     */
+    REMOTE_PROC_NODE_DEVICE_DETTACH = 118,
+    /**
+     * @generate: server
+     */
+    REMOTE_PROC_NODE_DEVICE_RE_ATTACH = 119,
+    /**
+     * @generate: server
+     */
+    REMOTE_PROC_NODE_DEVICE_RESET = 120,
+
+
+
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL = 121,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_GET_SECURITY_MODEL = 122,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_NODE_DEVICE_CREATE_XML = 123,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_DEVICE_DESTROY = 124,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_VOL_CREATE_XML_FROM = 125,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_INTERFACES = 126,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_INTERFACES = 127,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_INTERFACE_LOOKUP_BY_NAME = 128,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_INTERFACE_LOOKUP_BY_MAC_STRING = 129,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_INTERFACE_GET_XML_DESC = 130,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_INTERFACE_DEFINE_XML = 131,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_INTERFACE_UNDEFINE = 132,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_INTERFACE_CREATE = 133,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_INTERFACE_DESTROY = 134,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_XML_FROM_NATIVE = 135,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_XML_TO_NATIVE = 136,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_DEFINED_INTERFACES = 137,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_DEFINED_INTERFACES = 138,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_SECRETS = 139,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_SECRETS = 140,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_SECRET_LOOKUP_BY_UUID = 141,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_SECRET_DEFINE_XML = 142,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_SECRET_GET_XML_DESC = 143,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_SECRET_SET_VALUE = 144,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_SECRET_GET_VALUE = 145,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_SECRET_UNDEFINE = 146,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_SECRET_LOOKUP_BY_USAGE = 147,
+    /**
+     * @generate: both
+     * @writestream: 1
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL = 148,
+    /**
+     * @generate: server
+     * @priority: high
+     */
+    REMOTE_PROC_IS_SECURE = 149,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_IS_ACTIVE = 150,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_IS_PERSISTENT = 151,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_IS_ACTIVE = 152,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_IS_PERSISTENT = 153,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_IS_ACTIVE = 154,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_IS_PERSISTENT = 155,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_INTERFACE_IS_ACTIVE = 156,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_GET_LIB_VERSION = 157,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_CPU_COMPARE = 158,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_MEMORY_STATS = 159,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_ATTACH_DEVICE_FLAGS = 160,
+
+
+
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_DETACH_DEVICE_FLAGS = 161,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_CPU_BASELINE = 162,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_GET_JOB_INFO = 163,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_ABORT_JOB = 164,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_VOL_WIPE = 165,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_SET_MAX_DOWNTIME = 166,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_EVENTS_REGISTER_ANY = 167,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_EVENTS_DEREGISTER_ANY = 168,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_REBOOT = 169,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_RTC_CHANGE = 170,
+
+
+
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_WATCHDOG = 171,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_IO_ERROR = 172,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_GRAPHICS = 173,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_UPDATE_DEVICE_FLAGS = 174,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NWFILTER_LOOKUP_BY_NAME = 175,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NWFILTER_LOOKUP_BY_UUID = 176,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NWFILTER_GET_XML_DESC = 177,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NUM_OF_NWFILTERS = 178,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_LIST_NWFILTERS = 179,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NWFILTER_DEFINE_XML = 180,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NWFILTER_UNDEFINE = 181,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MANAGED_SAVE = 182,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_HAS_MANAGED_SAVE_IMAGE = 183,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MANAGED_SAVE_REMOVE = 184,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_CREATE_XML = 185,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_GET_XML_DESC = 186,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_NUM = 187,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_NAMES = 188,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_LOOKUP_BY_NAME = 189,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_HAS_CURRENT_SNAPSHOT = 190,
+
+
+
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_CURRENT = 191,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_REVERT_TO_SNAPSHOT = 192,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_DELETE = 193,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_GET_BLOCK_INFO = 194,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_IO_ERROR_REASON = 195,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_CREATE_WITH_FLAGS = 196,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_MEMORY_PARAMETERS = 197,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_MEMORY_PARAMETERS = 198,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_VCPUS_FLAGS = 199,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_GET_VCPUS_FLAGS = 200,
+
+
+
+    /**
+     * @generate: both
+     * @readstream: 2
+     */
+    REMOTE_PROC_DOMAIN_OPEN_CONSOLE = 201,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_IS_UPDATED = 202,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_GET_SYSINFO = 203,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_MEMORY_FLAGS = 204,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_BLKIO_PARAMETERS = 205,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_BLKIO_PARAMETERS = 206,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_SET_MAX_SPEED = 207,
+    /**
+     * @generate: both
+     * @writestream: 1
+     */
+    REMOTE_PROC_STORAGE_VOL_UPLOAD = 208,
+    /**
+     * @generate: both
+     * @readstream: 1
+     */
+    REMOTE_PROC_STORAGE_VOL_DOWNLOAD = 209,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_INJECT_NMI = 210,
+
+
+
+    /**
+     * @generate: both
+     * @readstream: 1
+     */
+    REMOTE_PROC_DOMAIN_SCREENSHOT = 211,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_GET_STATE = 212,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_BEGIN3 = 213,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE3 = 214,
+    /**
+     * @generate: server
+     * @writestream: 1
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL3 = 215,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_PERFORM3 = 216,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_FINISH3 = 217,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_CONFIRM3 = 218,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_SCHEDULER_PARAMETERS_FLAGS = 219,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_INTERFACE_CHANGE_BEGIN = 220,
+
+
+
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_INTERFACE_CHANGE_COMMIT = 221,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_INTERFACE_CHANGE_ROLLBACK = 222,
+    /**
+     * @generate: client
+     */
+    REMOTE_PROC_DOMAIN_GET_SCHEDULER_PARAMETERS_FLAGS = 223,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_EVENT_CONTROL_ERROR = 224,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_PIN_VCPU_FLAGS = 225,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SEND_KEY = 226,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_GET_CPU_STATS = 227,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_GET_MEMORY_STATS = 228,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_GET_CONTROL_INFO = 229,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_VCPU_PIN_INFO = 230,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_UNDEFINE_FLAGS = 231,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SAVE_FLAGS = 232,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_RESTORE_FLAGS = 233,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_DESTROY_FLAGS = 234,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SAVE_IMAGE_GET_XML_DESC = 235,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SAVE_IMAGE_DEFINE_XML = 236,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_BLOCK_JOB_ABORT = 237,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_BLOCK_JOB_INFO = 238,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_BLOCK_JOB_SET_SPEED = 239,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_BLOCK_PULL = 240,
+
+
+
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB = 241,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_GET_MAX_SPEED = 242,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_BLOCK_STATS_FLAGS = 243,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_GET_PARENT = 244,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_RESET = 245,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_NUM_CHILDREN = 246,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_CHILDREN_NAMES = 247,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_EVENT_DISK_CHANGE = 248,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_OPEN_GRAPHICS = 249,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_NODE_SUSPEND_FOR_DURATION = 250,
+
+
+
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_BLOCK_RESIZE = 251,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_BLOCK_IO_TUNE = 252,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_BLOCK_IO_TUNE = 253,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_NUMA_PARAMETERS = 254,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_NUMA_PARAMETERS = 255,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_INTERFACE_PARAMETERS = 256,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_INTERFACE_PARAMETERS = 257,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SHUTDOWN_FLAGS = 258,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_VOL_WIPE_PATTERN = 259,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_STORAGE_VOL_RESIZE = 260,
+
+
+
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_PM_SUSPEND_FOR_DURATION = 261,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_CPU_STATS = 262,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_DISK_ERRORS = 263,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SET_METADATA = 264,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_GET_METADATA = 265,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_BLOCK_REBASE = 266,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_PM_WAKEUP = 267,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_TRAY_CHANGE = 268,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_PMWAKEUP = 269,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_PMSUSPEND = 270,
+
+
+
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_IS_CURRENT = 271,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_HAS_METADATA = 272,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_CONNECT_LIST_ALL_DOMAINS = 273,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_LIST_ALL_SNAPSHOTS = 274,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_ALL_CHILDREN = 275,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_BALLOON_CHANGE = 276,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_GET_HOSTNAME = 277,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL_LIST = 278,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_PIN_EMULATOR = 279,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_EMULATOR_PIN_INFO = 280,
+
+
+
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_CONNECT_LIST_ALL_STORAGE_POOLS = 281,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_STORAGE_POOL_LIST_ALL_VOLUMES = 282,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_CONNECT_LIST_ALL_NETWORKS = 283,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_CONNECT_LIST_ALL_INTERFACES = 284,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_CONNECT_LIST_ALL_NODE_DEVICES = 285,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_CONNECT_LIST_ALL_NWFILTERS = 286,
+    /**
+     * @generate: none
+     * @priority: high
+     */
+    REMOTE_PROC_CONNECT_LIST_ALL_SECRETS = 287,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_NODE_SET_MEMORY_PARAMETERS = 288,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_NODE_GET_MEMORY_PARAMETERS = 289,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_BLOCK_COMMIT = 290,
+
+
+
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NETWORK_UPDATE = 291,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_EVENT_PMSUSPEND_DISK = 292,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_NODE_GET_CPU_MAP = 293,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_FSTRIM = 294,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_SEND_PROCESS_SIGNAL = 295,
+    /**
+     * @generate: both
+     * @readstream: 2
+     */
+    REMOTE_PROC_DOMAIN_OPEN_CHANNEL = 296,
+    /**
+     * @generate: both
+     * @priority: high
+     */
+    REMOTE_PROC_NODE_DEVICE_LOOKUP_SCSI_HOST_BY_WWN = 297,
+    /**
+     * @generate: none
+     */
+    REMOTE_PROC_DOMAIN_GET_JOB_STATS = 298,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_GET_COMPRESSION_CACHE = 299,
+    /**
+     * @generate: both
+     */
+    REMOTE_PROC_DOMAIN_MIGRATE_SET_COMPRESSION_CACHE = 300
+
+
 
     /*
      * Notice how the entries are grouped in sets of 10 ?
      * Nice isn't it. Please keep it this way when adding more.
-     *
-     * Each function must have a three-word comment.  The first word is
-     * whether gendispatch.pl handles daemon, the second whether
-     * it handles src/remote.  Additional flags can be specified after a
-     * pipe.
-     * The last argument describes priority of API. There are two accepted
-     * values: low, high; Each API that might eventually access hypervisor's
-     * monitor (and thus block) MUST fall into low priority. However, there
-     * are some exceptions to this rule, e.g. domainDestroy. Other APIs MAY
-     * be marked as high priority. If in doubt, it's safe to choose low.
-     * Low is taken as default, and thus can be left out.
-     *
-     * The (readstream|writestream)@<offset> flag lets daemon and src/remote
-     * create a stream.  The direction is defined from the src/remote point
-     * of view.  A readstream transfers data from daemon to src/remote.  The
-     * <offset> specifies at which offset the stream parameter is inserted
-     * in the function parameter list. */
+     */
 };
diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl
index ef387e0..65a0ac2 100755
--- a/src/rpc/gendispatch.pl
+++ b/src/rpc/gendispatch.pl
@@ -82,10 +82,11 @@ sub name_to_TypeName {
 
 # Read the input file (usually remote_protocol.x) and form an
 # opinion about the name, args and return type of each RPC.
-my ($name, $ProcName, $id, $flags, %calls, @calls);
+my ($name, $ProcName, $id, $flags, %calls, @calls, %opts);
 
 my $collect_args_members = 0;
 my $collect_ret_members = 0;
+my $collect_opts = 0;
 my $last_name;
 
 open PROTOCOL, "<$protocol" or die "cannot open $protocol: $!";
@@ -103,6 +104,19 @@ while (<PROTOCOL>) {
         } elsif ($_ =~ m/^\s*(.*\S)\s*$/) {
             push(@{$calls{$name}->{ret_members}}, $1);
         }
+    } elsif ($collect_opts) {
+        if (m,^\s*\*\s*\@(\w+)\s*:\s*(\w+)\s*$,) {
+            $opts{$1} = $2;
+        } elsif (m,^\s*\*/\s*$,) {
+            $collect_opts = 0;
+        } elsif (m,^\s*\*\s*$,) {
+            # pass
+        } else {
+            die "cannot parse $_";
+        }
+    } elsif (m,/\*\*,) {
+        %opts = ();
+        $collect_opts = 1;
     } elsif (/^struct (${structprefix}_(.*)_args)/ ||
              /^struct (${structprefix}(.*)Args)/) {
         my $structname = $1;
@@ -171,11 +185,10 @@ while (<PROTOCOL>) {
 
         $collect_args_members = 0;
         $collect_ret_members = 0;
-    } elsif (/^\s*(${procprefix}_PROC_(.*?))\s*=\s*(\d+)\s*,?(.*)$/) {
+    } elsif (/^\s*(${procprefix}_PROC_(.*?))\s*=\s*(\d+)\s*,?\s*$/) {
         my $constname = $1;
         $name = $2;
         $id = $3;
-        $flags = $4;
         $ProcName = name_to_ProcName ($name);
         $name = lc $name;
         $name =~ s/_//g;
@@ -195,41 +208,45 @@ while (<PROTOCOL>) {
         $calls{$name}->{constname} = $constname;
 
         if ($opt_b or $opt_k) {
-            if (!($flags =~ m/^\s*\/\*\s*(\S+)\s+(\S+)\s*(\|.*)?\s+(priority:(\S+))?\s*\*\/\s*$/)) {
-                die "invalid generator flags '$flags' for $constname"
+            if (!exists $opts{generate}) {
+                die "'\@generate' annotation missing for $constname";
             }
 
-            my $genmode = $opt_b ? $1 : $2;
-            my $genflags = $3;
-            my $priority = defined $5 ? $5 : "low";
+            if ($opts{generate} !~ /^(both|server|client|none)$/) {
+                die "'\@generate' annotation value '$opts{generate}' invalid";
+            }
 
-            if ($genmode eq "autogen") {
+            if ($opts{generate} eq "both") {
+                push(@autogen, $ProcName);
+            } elsif ($opt_b && ($opts{generate} eq "server")) {
+                push(@autogen, $ProcName);
+            } elsif (!$opt_b && ($opts{generate} eq "client")) {
                 push(@autogen, $ProcName);
-            } elsif ($genmode eq "skipgen") {
-                # ignore it
-            } else {
-                die "invalid generator flags for ${procprefix}_PROC_${name}"
             }
 
-            if (defined $genflags and $genflags ne "") {
-                if ($genflags =~ m/^\|\s*(read|write)stream@(\d+)\s*$/) {
-                    $calls{$name}->{streamflag} = $1;
-                    $calls{$name}->{streamoffset} = int($2);
-                } else {
-                    die "invalid generator flags for ${procprefix}_PROC_${name}"
-                }
+            if (exists $opts{readstream}) {
+                $calls{$name}->{streamflag} = "read";
+                $calls{$name}->{streamoffset} = int($opts{readstream});
+            } elsif (exists $opts{writestream}) {
+                $calls{$name}->{streamflag} = "write";
+                $calls{$name}->{streamoffset} = int($opts{writestream});
             } else {
                 $calls{$name}->{streamflag} = "none";
             }
 
+
             # for now, we distinguish only two levels of prioroty:
             # low (0) and high (1)
-            if ($priority eq "high") {
-                $calls{$name}->{priority} = 1;
-            } elsif ($priority eq "low") {
-                $calls{$name}->{priority} = 0;
+            if (exists $opts{priority}) {
+                if ($opts{priority} eq "high") {
+                    $calls{$name}->{priority} = 1;
+                } elsif ($opts{priority} eq "low") {
+                    $calls{$name}->{priority} = 0;
+                } else {
+                    die "\@priority annotation value '$opts{priority}' invalid for $constname"
+                }
             } else {
-                die "invalid priority ${priority} for ${procprefix}_PROC_${name}"
+                $calls{$name}->{priority} = 0;
             }
         }
 
-- 
1.8.1.4




More information about the libvir-list mailing list