Once again rename members in the XDR definitions to avoid special case
code in the generator.
---
daemon/remote.c | 334 ---------------------------------------
daemon/remote_dispatch_bodies.c | 322 ++++++++++++++++++++++++++++++++++++-
daemon/remote_generator.pl | 80 ++++++++--
src/remote/remote_driver.c | 6 +-
src/remote/remote_protocol.c | 6 +-
src/remote/remote_protocol.h | 6 +-
src/remote/remote_protocol.x | 6 +-
src/remote_protocol-structs | 6 +-
8 files changed, 397 insertions(+), 369 deletions(-)
diff --git a/daemon/remote.c b/daemon/remote.c
index f70c445..e0fb1f8 100644
--- a/daemon/remote.c
+++ b/daemon/remote.c
@@ -494,43 +494,6 @@ cleanup:
}
static int
-remoteDispatchNodeGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- void *args ATTRIBUTE_UNUSED,
- remote_node_get_info_ret *ret)
-{
- virNodeInfo info;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
- goto cleanup;
- }
-
- if (virNodeGetInfo(conn, &info) < 0)
- goto cleanup;
-
- memcpy(ret->model, info.model, sizeof ret->model);
- ret->memory = info.memory;
- ret->cpus = info.cpus;
- ret->mhz = info.mhz;
- ret->nodes = info.nodes;
- ret->sockets = info.sockets;
- ret->cores = info.cores;
- ret->threads = info.threads;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
remoteDispatchDomainGetSchedulerType(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
@@ -722,93 +685,6 @@ cleanup:
}
static int
-remoteDispatchDomainBlockStats(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_domain_block_stats_args *args,
- remote_domain_block_stats_ret *ret)
-{
- virDomainPtr dom = NULL;
- char *path;
- struct _virDomainBlockStats stats;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
- goto cleanup;
- }
-
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
- path = args->path;
-
- if (virDomainBlockStats(dom, path, &stats, sizeof stats) < 0)
- goto cleanup;
-
- ret->rd_req = stats.rd_req;
- ret->rd_bytes = stats.rd_bytes;
- ret->wr_req = stats.wr_req;
- ret->wr_bytes = stats.wr_bytes;
- ret->errs = stats.errs;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
-remoteDispatchDomainInterfaceStats(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_domain_interface_stats_args *args,
- remote_domain_interface_stats_ret *ret)
-{
- virDomainPtr dom = NULL;
- char *path;
- struct _virDomainInterfaceStats stats;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
- goto cleanup;
- }
-
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
- path = args->path;
-
- if (virDomainInterfaceStats(dom, path, &stats, sizeof stats) < 0)
- goto cleanup;
-
- ret->rx_bytes = stats.rx_bytes;
- ret->rx_packets = stats.rx_packets;
- ret->rx_errs = stats.rx_errs;
- ret->rx_drop = stats.rx_drop;
- ret->tx_bytes = stats.tx_bytes;
- ret->tx_packets = stats.tx_packets;
- ret->tx_errs = stats.tx_errs;
- ret->tx_drop = stats.tx_drop;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
remoteDispatchDomainMemoryStats(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
@@ -1012,46 +888,6 @@ cleanup:
}
static int
-remoteDispatchDomainGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_domain_get_info_args *args,
- remote_domain_get_info_ret *ret)
-{
- virDomainPtr dom = NULL;
- virDomainInfo info;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
- goto cleanup;
- }
-
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
-
- if (virDomainGetInfo(dom, &info) < 0)
- goto cleanup;
-
- ret->state = info.state;
- ret->max_mem = info.maxMem;
- ret->memory = info.memory;
- ret->nr_virt_cpu = info.nrVirtCpu;
- ret->cpu_time = info.cpuTime;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
remoteDispatchDomainGetSecurityLabel(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
@@ -2651,91 +2487,6 @@ remoteDispatchAuthPolkit(struct qemud_server *server
ATTRIBUTE_UNUSED,
/***************************************************************
- * STORAGE POOL APIS
- ***************************************************************/
-
-static int
-remoteDispatchStoragePoolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_storage_pool_get_info_args *args,
- remote_storage_pool_get_info_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- virStoragePoolInfo info;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
- goto cleanup;
- }
-
- if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
- goto cleanup;
-
- if (virStoragePoolGetInfo(pool, &info) < 0)
- goto cleanup;
-
- ret->state = info.state;
- ret->capacity = info.capacity;
- ret->allocation = info.allocation;
- ret->available = info.available;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-/***************************************************************
- * STORAGE VOL APIS
- ***************************************************************/
-
-static int
-remoteDispatchStorageVolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_storage_vol_get_info_args *args,
- remote_storage_vol_get_info_ret *ret)
-{
- virStorageVolPtr vol = NULL;
- virStorageVolInfo info;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
- goto cleanup;
- }
-
- if (!(vol = get_nonnull_storage_vol(conn, args->vol)))
- goto cleanup;
-
- if (virStorageVolGetInfo(vol, &info) < 0)
- goto cleanup;
-
- ret->type = info.type;
- ret->capacity = info.capacity;
- ret->allocation = info.allocation;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (vol)
- virStorageVolFree(vol);
- return rv;
-}
-
-/***************************************************************
* NODE INFO APIS
**************************************************************/
@@ -3059,53 +2810,6 @@ cleanup:
}
static int
-remoteDispatchDomainGetJobInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_domain_get_job_info_args *args,
- remote_domain_get_job_info_ret *ret)
-{
- virDomainPtr dom = NULL;
- virDomainJobInfo info;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
- goto cleanup;
- }
-
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
-
- if (virDomainGetJobInfo(dom, &info) < 0)
- goto cleanup;
-
- ret->type = info.type;
- ret->timeElapsed = info.timeElapsed;
- ret->timeRemaining = info.timeRemaining;
- ret->dataTotal = info.dataTotal;
- ret->dataProcessed = info.dataProcessed;
- ret->dataRemaining = info.dataRemaining;
- ret->memTotal = info.memTotal;
- ret->memProcessed = info.memProcessed;
- ret->memRemaining = info.memRemaining;
- ret->fileTotal = info.fileTotal;
- ret->fileProcessed = info.fileProcessed;
- ret->fileRemaining = info.fileRemaining;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
remoteDispatchDomainEventsRegisterAny(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
@@ -3192,44 +2896,6 @@ cleanup:
}
static int
-remoteDispatchDomainGetBlockInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_domain_get_block_info_args *args,
- remote_domain_get_block_info_ret *ret)
-{
- virDomainPtr dom = NULL;
- virDomainBlockInfo info;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
- goto cleanup;
- }
-
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
-
- if (virDomainGetBlockInfo(dom, args->path, &info, args->flags) < 0)
- goto cleanup;
-
- ret->capacity = info.capacity;
- ret->allocation = info.allocation;
- ret->physical = info.physical;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
qemuDispatchMonitorCommand(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c
index 50432f9..43bfc6d 100644
--- a/daemon/remote_dispatch_bodies.c
+++ b/daemon/remote_dispatch_bodies.c
@@ -178,7 +178,45 @@ cleanup:
/* remoteDispatchDomainBlockPeek has to be implemented manually */
-/* remoteDispatchDomainBlockStats has to be implemented manually */
+static int
+remoteDispatchDomainBlockStats(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_domain_block_stats_args *args,
+ remote_domain_block_stats_ret *ret)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
+ virDomainBlockStatsStruct tmp;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
+ goto cleanup;
+ }
+
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
+
+ if (virDomainBlockStats(dom, args->path, &tmp, sizeof tmp) < 0)
+ goto cleanup;
+
+ ret->rd_req = tmp.rd_req;
+ ret->rd_bytes = tmp.rd_bytes;
+ ret->wr_req = tmp.wr_req;
+ ret->wr_bytes = tmp.wr_bytes;
+ ret->errs = tmp.errs;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
static int
remoteDispatchDomainCoreDump(
@@ -498,11 +536,130 @@ cleanup:
/* remoteDispatchDomainGetBlkioParameters has to be implemented manually */
-/* remoteDispatchDomainGetBlockInfo has to be implemented manually */
+static int
+remoteDispatchDomainGetBlockInfo(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_domain_get_block_info_args *args,
+ remote_domain_get_block_info_ret *ret)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
+ virDomainBlockInfo tmp;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
+ goto cleanup;
+ }
+
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
+
+ if (virDomainGetBlockInfo(dom, args->path, &tmp, args->flags) < 0)
+ goto cleanup;
+
+ ret->allocation = tmp.allocation;
+ ret->capacity = tmp.capacity;
+ ret->physical = tmp.physical;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
+
+static int
+remoteDispatchDomainGetInfo(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_domain_get_info_args *args,
+ remote_domain_get_info_ret *ret)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
+ virDomainInfo tmp;
-/* remoteDispatchDomainGetInfo has to be implemented manually */
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
+ goto cleanup;
+ }
-/* remoteDispatchDomainGetJobInfo has to be implemented manually */
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
+
+ if (virDomainGetInfo(dom, &tmp) < 0)
+ goto cleanup;
+
+ ret->state = tmp.state;
+ ret->maxMem = tmp.maxMem;
+ ret->memory = tmp.memory;
+ ret->nrVirtCpu = tmp.nrVirtCpu;
+ ret->cpuTime = tmp.cpuTime;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
+
+static int
+remoteDispatchDomainGetJobInfo(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_domain_get_job_info_args *args,
+ remote_domain_get_job_info_ret *ret)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
+ virDomainJobInfo tmp;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
+ goto cleanup;
+ }
+
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
+
+ if (virDomainGetJobInfo(dom, &tmp) < 0)
+ goto cleanup;
+
+ ret->type = tmp.type;
+ ret->timeElapsed = tmp.timeElapsed;
+ ret->timeRemaining = tmp.timeRemaining;
+ ret->dataTotal = tmp.dataTotal;
+ ret->dataProcessed = tmp.dataProcessed;
+ ret->dataRemaining = tmp.dataRemaining;
+ ret->memTotal = tmp.memTotal;
+ ret->memProcessed = tmp.memProcessed;
+ ret->memRemaining = tmp.memRemaining;
+ ret->fileTotal = tmp.fileTotal;
+ ret->fileProcessed = tmp.fileProcessed;
+ ret->fileRemaining = tmp.fileRemaining;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
static int
remoteDispatchDomainGetMaxMemory(
@@ -730,7 +887,48 @@ cleanup:
return rv;
}
-/* remoteDispatchDomainInterfaceStats has to be implemented manually */
+static int
+remoteDispatchDomainInterfaceStats(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_domain_interface_stats_args *args,
+ remote_domain_interface_stats_ret *ret)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
+ virDomainInterfaceStatsStruct tmp;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
+ goto cleanup;
+ }
+
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
+
+ if (virDomainInterfaceStats(dom, args->path, &tmp, sizeof tmp) < 0)
+ goto cleanup;
+
+ ret->rx_bytes = tmp.rx_bytes;
+ ret->rx_packets = tmp.rx_packets;
+ ret->rx_errs = tmp.rx_errs;
+ ret->rx_drop = tmp.rx_drop;
+ ret->tx_bytes = tmp.tx_bytes;
+ ret->tx_packets = tmp.tx_packets;
+ ret->tx_errs = tmp.tx_errs;
+ ret->tx_drop = tmp.tx_drop;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
static int
remoteDispatchDomainIsActive(
@@ -3875,7 +4073,42 @@ cleanup:
return rv;
}
-/* remoteDispatchNodeGetInfo has to be implemented manually */
+static int
+remoteDispatchNodeGetInfo(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ void *args ATTRIBUTE_UNUSED,
+ remote_node_get_info_ret *ret)
+{
+ int rv = -1;
+ virNodeInfo tmp;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
+ goto cleanup;
+ }
+
+ if (virNodeGetInfo(conn, &tmp) < 0)
+ goto cleanup;
+
+ memcpy(ret->model, tmp.model, sizeof ret->model);
+ ret->memory = tmp.memory;
+ ret->cpus = tmp.cpus;
+ ret->mhz = tmp.mhz;
+ ret->nodes = tmp.nodes;
+ ret->sockets = tmp.sockets;
+ ret->cores = tmp.cores;
+ ret->threads = tmp.threads;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
/* remoteDispatchNodeGetSecurityModel has to be implemented manually */
@@ -4901,7 +5134,44 @@ cleanup:
return rv;
}
-/* remoteDispatchStoragePoolGetInfo has to be implemented manually */
+static int
+remoteDispatchStoragePoolGetInfo(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_storage_pool_get_info_args *args,
+ remote_storage_pool_get_info_ret *ret)
+{
+ int rv = -1;
+ virStoragePoolPtr pool = NULL;
+ virStoragePoolInfo tmp;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
+ goto cleanup;
+ }
+
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
+ goto cleanup;
+
+ if (virStoragePoolGetInfo(pool, &tmp) < 0)
+ goto cleanup;
+
+ ret->state = tmp.state;
+ ret->capacity = tmp.capacity;
+ ret->allocation = tmp.allocation;
+ ret->available = tmp.available;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (pool)
+ virStoragePoolFree(pool);
+ return rv;
+}
static int
remoteDispatchStoragePoolIsActive(
@@ -5419,7 +5689,43 @@ cleanup:
return rv;
}
-/* remoteDispatchStorageVolGetInfo has to be implemented manually */
+static int
+remoteDispatchStorageVolGetInfo(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_storage_vol_get_info_args *args,
+ remote_storage_vol_get_info_ret *ret)
+{
+ int rv = -1;
+ virStorageVolPtr vol = NULL;
+ virStorageVolInfo tmp;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not
open"));
+ goto cleanup;
+ }
+
+ if (!(vol = get_nonnull_storage_vol(conn, args->vol)))
+ goto cleanup;
+
+ if (virStorageVolGetInfo(vol, &tmp) < 0)
+ goto cleanup;
+
+ ret->type = tmp.type;
+ ret->capacity = tmp.capacity;
+ ret->allocation = tmp.allocation;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (vol)
+ virStorageVolFree(vol);
+ return rv;
+}
static int
remoteDispatchStorageVolGetPath(
diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl
index 1fd4627..1aaeaae 100755
--- a/daemon/remote_generator.pl
+++ b/daemon/remote_generator.pl
@@ -259,31 +259,23 @@ elsif ($opt_b) {
"AuthPolkit",
"DomainBlockPeek",
- "DomainBlockStats",
"DomainCreateWithFlags",
"DomainEventsDeregister",
"DomainEventsRegister",
"DomainGetBlkioParameters",
- "DomainGetBlockInfo",
- "DomainGetInfo",
- "DomainGetJobInfo",
"DomainGetMemoryParameters",
"DomainGetSchedulerParameters",
"DomainGetSchedulerType",
"DomainGetSecurityLabel",
"DomainGetVcpus",
- "DomainInterfaceStats",
"DomainMemoryPeek",
"DomainMemoryStats",
"DomainMigratePrepare",
"DomainMigratePrepare2",
"GetType",
"NodeDeviceGetParent",
- "NodeGetInfo",
"NodeGetSecurityModel",
- "SecretGetValue",
- "StoragePoolGetInfo",
- "StorageVolGetInfo");
+ "SecretGetValue");
} elsif ($structprefix eq "qemu") {
@ungeneratable = ("MonitorCommand");
}
@@ -408,6 +400,10 @@ elsif ($opt_b) {
} else {
push(@args_list, "args->$2");
}
+ } elsif ($args_member =~ m/^\/*/) {
+ # ignore comments
+ } else {
+ die "unhandled type for argument value: $args_member";
}
}
}
@@ -419,10 +415,27 @@ elsif ($opt_b) {
my $single_ret_list_name = "undefined";
my $single_ret_list_max_var = "undefined";
my $single_ret_list_max_define = "undefined";
+ my $multi_ret = 0;
+
+ if ($calls{$_}->{ret} ne "void" and
+ scalar(@{$calls{$_}->{ret_members}}) > 1) {
+ $multi_ret = 1;
+ }
if ($calls{$_}->{ret} ne "void") {
foreach my $ret_member (@{$calls{$_}->{ret_members}}) {
- if ($ret_member =~ m/remote_nonnull_string (\S+)<(\S+)>;/) {
+ if ($multi_ret) {
+ if ($ret_member =~ m/(char|short|int|hyper) (\S+)\[\S+\];/) {
+ push(@ret_list, "memcpy(ret->$2, tmp.$2, sizeof
ret->$2);");
+ } elsif ($ret_member =~ m/char (\S+);/ or
+ $ret_member =~ m/short (\S+);/ or
+ $ret_member =~ m/int (\S+);/ or
+ $ret_member =~ m/hyper (\S+);/) {
+ push(@ret_list, "ret->$1 = tmp.$1;");
+ } else {
+ die "unhandled type for multi-return-value:
$ret_member";
+ }
+ } elsif ($ret_member =~ m/remote_nonnull_string (\S+)<(\S+)>;/) {
push(@vars_list, "int len");
push(@ret_list, "ret->$1.$1_len = len;");
push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);");
@@ -530,10 +543,39 @@ elsif ($opt_b) {
} else {
$single_ret_by_ref = 1;
}
+ } else {
+ die "unhandled type for return value: $ret_member";
}
}
}
+ if ($multi_ret) {
+ if (! @args_list) {
+ push(@args_list, "conn");
+ }
+
+ my $struct_name = $calls{$_}->{ProcName};
+ $struct_name =~ s/Get//;
+
+ if ($calls{$_}->{ProcName} eq "DomainGetBlockInfo") {
+ my $flags = pop(@args_list);
+ push(@args_list, "&tmp");
+ push(@args_list, $flags);
+ } elsif ($calls{$_}->{ProcName} eq "DomainBlockStats") {
+ $struct_name .= "Struct";
+ push(@args_list, "&tmp");
+ push(@args_list, "sizeof tmp");
+ } elsif ($calls{$_}->{ProcName} eq "DomainInterfaceStats") {
+ $struct_name .= "Struct";
+ push(@args_list, "&tmp");
+ push(@args_list, "sizeof tmp");
+ } else {
+ push(@args_list, "&tmp");
+ }
+
+ push(@vars_list, "vir$struct_name tmp");
+ }
+
foreach my $var (@vars_list) {
print " $var;\n";
}
@@ -574,7 +616,7 @@ elsif ($opt_b) {
print ") < 0)\n";
print " goto cleanup;\n";
print "\n";
- } elsif (scalar(@{$calls{$_}->{ret_members}}) == 1) {
+ } elsif (!$multi_ret) {
my $prefix = "";
my $proc_name = $calls{$_}->{ProcName};
@@ -630,7 +672,21 @@ elsif ($opt_b) {
print " ";
}
- print join(" \n", @ret_list);
+ print join("\n ", @ret_list);
+ print "\n";
+ } else {
+ print " if (vir$calls{$_}->{ProcName}(";
+ print join(', ', @args_list);
+ print ") < 0)\n";
+
+ print " goto cleanup;\n";
+ print "\n";
+
+ if (@ret_list) {
+ print " ";
+ }
+
+ print join("\n ", @ret_list);
print "\n";
}
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 935f321..934fdda 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -2848,10 +2848,10 @@ remoteDomainGetInfo (virDomainPtr domain, virDomainInfoPtr info)
goto done;
info->state = ret.state;
- info->maxMem = ret.max_mem;
+ info->maxMem = ret.maxMem;
info->memory = ret.memory;
- info->nrVirtCpu = ret.nr_virt_cpu;
- info->cpuTime = ret.cpu_time;
+ info->nrVirtCpu = ret.nrVirtCpu;
+ info->cpuTime = ret.cpuTime;
rv = 0;
diff --git a/src/remote/remote_protocol.c b/src/remote/remote_protocol.c
index 1bdd79e..301ffbf 100644
--- a/src/remote/remote_protocol.c
+++ b/src/remote/remote_protocol.c
@@ -1185,13 +1185,13 @@ 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_uint64_t (xdrs, &objp->max_mem))
+ if (!xdr_uint64_t (xdrs, &objp->maxMem))
return FALSE;
if (!xdr_uint64_t (xdrs, &objp->memory))
return FALSE;
- if (!xdr_u_short (xdrs, &objp->nr_virt_cpu))
+ if (!xdr_u_short (xdrs, &objp->nrVirtCpu))
return FALSE;
- if (!xdr_uint64_t (xdrs, &objp->cpu_time))
+ if (!xdr_uint64_t (xdrs, &objp->cpuTime))
return FALSE;
return TRUE;
}
diff --git a/src/remote/remote_protocol.h b/src/remote/remote_protocol.h
index ff6903c..8942646 100644
--- a/src/remote/remote_protocol.h
+++ b/src/remote/remote_protocol.h
@@ -641,10 +641,10 @@ typedef struct remote_domain_get_info_args
remote_domain_get_info_args;
struct remote_domain_get_info_ret {
u_char state;
- uint64_t max_mem;
+ uint64_t maxMem;
uint64_t memory;
- u_short nr_virt_cpu;
- uint64_t cpu_time;
+ u_short nrVirtCpu;
+ uint64_t cpuTime;
};
typedef struct remote_domain_get_info_ret remote_domain_get_info_ret;
diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
index 0858096..c706c36 100644
--- a/src/remote/remote_protocol.x
+++ b/src/remote/remote_protocol.x
@@ -693,10 +693,10 @@ struct remote_domain_get_info_args {
struct remote_domain_get_info_ret {
unsigned char state;
- unsigned hyper max_mem;
+ unsigned hyper maxMem;
unsigned hyper memory;
- unsigned short nr_virt_cpu;
- unsigned hyper cpu_time;
+ unsigned short nrVirtCpu;
+ unsigned hyper cpuTime;
};
struct remote_domain_save_args {
diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs
index d433f6b..f904c4d 100644
--- a/src/remote_protocol-structs
+++ b/src/remote_protocol-structs
@@ -386,10 +386,10 @@ struct remote_domain_get_info_args {
};
struct remote_domain_get_info_ret {
u_char state;
- uint64_t max_mem;
+ uint64_t maxMem;
uint64_t memory;
- u_short nr_virt_cpu;
- uint64_t cpu_time;
+ u_short nrVirtCpu;
+ uint64_t cpuTime;
};
struct remote_domain_save_args {
remote_nonnull_domain dom;
--
1.7.0.4