return 0;
}
-static int
-remoteDispatchSupportsFeature(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_supports_feature_args *args, remote_supports_feature_ret *ret)
-{
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if ((ret->supported = virDrvSupportsFeature(conn, args->feature)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
static int
remoteDispatchGetType(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
return rv;
}
-static int
-remoteDispatchGetVersion(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_get_version_ret *ret)
-{
- unsigned long hvVer;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (virConnectGetVersion(conn, &hvVer) < 0)
- goto cleanup;
-
- ret->hv_ver = hvVer;
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchGetLibVersion(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_get_lib_version_ret *ret)
-{
- unsigned long libVer;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (virConnectGetLibVersion(conn, &libVer) < 0)
- goto cleanup;
-
- ret->lib_ver = libVer;
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchGetHostname(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_get_hostname_ret *ret)
-{
- char *hostname;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(hostname = virConnectGetHostname(conn)))
- goto cleanup;
-
- ret->hostname = hostname;
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchGetURI(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_get_uri_ret *ret)
-{
- char *uri;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(uri = virConnectGetURI(conn)))
- goto cleanup;
-
- ret->uri = uri;
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchGetSysinfo(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_get_sysinfo_args *args,
- remote_get_sysinfo_ret *ret)
-{
- unsigned int flags;
- char *sysinfo;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- flags = args->flags;
- if (!(sysinfo = virConnectGetSysinfo(conn, flags)))
- goto cleanup;
-
- ret->sysinfo = sysinfo;
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
static int
remoteDispatchGetMaxVcpus(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
return rv;
}
-static int
-remoteDispatchGetCapabilities(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_get_capabilities_ret *ret)
-{
- char *caps;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(caps = virConnectGetCapabilities(conn)))
- goto cleanup;
-
- ret->capabilities = caps;
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
static int
remoteDispatchNodeGetCellsFreeMemory(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
}
static int
-remoteDispatchDomainDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED,
+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_dump_xml_args *args,
- remote_domain_dump_xml_ret *ret)
+ remote_domain_get_info_args *args,
+ remote_domain_get_info_ret *ret)
{
virDomainPtr dom = NULL;
+ virDomainInfo info;
int rv = -1;
if (!conn) {
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->xml = virDomainGetXMLDesc(dom, args->flags)))
+ 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:
}
static int
-remoteDispatchDomainXMLFromNative(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_xml_from_native_args *args,
- remote_domain_xml_from_native_ret *ret)
+remoteDispatchDomainGetSecurityLabel(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_security_label_args *args,
+ remote_domain_get_security_label_ret *ret)
{
+ virDomainPtr dom = NULL;
+ virSecurityLabelPtr seclabel = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->domainXml = virConnectDomainXMLFromNative(conn,
- args->nativeFormat,
- args->nativeConfig,
- args->flags)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
+
+ if (VIR_ALLOC(seclabel) < 0) {
+ virReportOOMError();
+ goto cleanup;
+ }
+
+ if (virDomainGetSecurityLabel(dom, seclabel) < 0)
+ goto cleanup;
+
+ ret->label.label_len = strlen(seclabel->label) + 1;
+ if (VIR_ALLOC_N(ret->label.label_val, ret->label.label_len) < 0) {
+ virReportOOMError();
goto cleanup;
+ }
+ strcpy(ret->label.label_val, seclabel->label);
+ ret->enforcing = seclabel->enforcing;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ VIR_FREE(seclabel);
return rv;
}
static int
-remoteDispatchDomainXMLToNative(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_xml_to_native_args *args,
- remote_domain_xml_to_native_ret *ret)
+remoteDispatchNodeGetSecurityModel(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_security_model_ret *ret)
{
+ virSecurityModel secmodel;
int rv = -1;
if (!conn) {
goto cleanup;
}
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->nativeConfig = virConnectDomainXMLToNative(conn,
- args->nativeFormat,
- args->domainXml,
- args->flags)))
+ memset(&secmodel, 0, sizeof secmodel);
+ if (virNodeGetSecurityModel(conn, &secmodel) < 0)
+ goto cleanup;
+
+ ret->model.model_len = strlen(secmodel.model) + 1;
+ if (VIR_ALLOC_N(ret->model.model_val, ret->model.model_len) < 0) {
+ virReportOOMError();
+ goto cleanup;
+ }
+ strcpy(ret->model.model_val, secmodel.model);
+
+ ret->doi.doi_len = strlen(secmodel.doi) + 1;
+ if (VIR_ALLOC_N(ret->doi.doi_val, ret->doi.doi_len) < 0) {
+ virReportOOMError();
goto cleanup;
+ }
+ strcpy(ret->doi.doi_val, secmodel.doi);
rv = 0;
return rv;
}
-
static int
-remoteDispatchDomainGetAutostart(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_autostart_args *args,
- remote_domain_get_autostart_ret *ret)
+remoteDispatchDomainGetVcpus(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_vcpus_args *args,
+ remote_domain_get_vcpus_ret *ret)
{
virDomainPtr dom = NULL;
+ virVcpuInfoPtr info = NULL;
+ unsigned char *cpumaps = NULL;
+ int info_len, i;
int rv = -1;
if (!conn) {
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainGetAutostart(dom, &ret->autostart) < 0)
+ if (args->maxinfo > REMOTE_VCPUINFO_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("maxinfo > REMOTE_VCPUINFO_MAX"));
goto cleanup;
+ }
- rv = 0;
+ if (args->maxinfo * args->maplen > REMOTE_CPUMAPS_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("maxinfo * maplen > REMOTE_CPUMAPS_MAX"));
+ goto cleanup;
+ }
-cleanup:
- if (rv < 0)
+ /* Allocate buffers to take the results. */
+ if (VIR_ALLOC_N(info, args->maxinfo) < 0)
+ goto no_memory;
+ if (args->maplen > 0 &&
+ VIR_ALLOC_N(cpumaps, args->maxinfo * args->maplen) < 0)
+ goto no_memory;
+
+ if ((info_len = virDomainGetVcpus(dom,
+ info, args->maxinfo,
+ cpumaps, args->maplen)) < 0)
+ goto cleanup;
+
+ /* Allocate the return buffer for info. */
+ ret->info.info_len = info_len;
+ if (VIR_ALLOC_N(ret->info.info_val, info_len) < 0)
+ goto no_memory;
+
+ for (i = 0; i < info_len; ++i) {
+ ret->info.info_val[i].number = info[i].number;
+ ret->info.info_val[i].state = info[i].state;
+ ret->info.info_val[i].cpu_time = info[i].cpuTime;
+ ret->info.info_val[i].cpu = info[i].cpu;
+ }
+
+ /* Don't need to allocate/copy the cpumaps if we make the reasonable
+ * assumption that unsigned char and char are the same size.
+ * Note that remoteDispatchClientRequest will free.
+ */
+ ret->cpumaps.cpumaps_len = args->maxinfo * args->maplen;
+ ret->cpumaps.cpumaps_val = (char *) cpumaps;
+ cpumaps = NULL;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0) {
remoteDispatchError(rerr);
+ VIR_FREE(ret->info.info_val);
+ }
+ VIR_FREE(cpumaps);
+ VIR_FREE(info);
if (dom)
virDomainFree(dom);
return rv;
+
+no_memory:
+ virReportOOMError();
+ goto 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)
+remoteDispatchDomainMigratePrepare(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_migrate_prepare_args *args,
+ remote_domain_migrate_prepare_ret *ret)
{
- virDomainPtr dom = NULL;
- virDomainInfo info;
+ char *cookie = NULL;
+ int cookielen = 0;
+ char *uri_in;
+ char **uri_out;
+ char *dname;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
+ uri_in = args->uri_in == NULL ? NULL : *args->uri_in;
+ dname = args->dname == NULL ? NULL : *args->dname;
+
+ /* Wacky world of XDR ... */
+ if (VIR_ALLOC(uri_out) < 0) {
+ virReportOOMError();
goto cleanup;
+ }
- if (virDomainGetInfo(dom, &info) < 0)
+ if (virDomainMigratePrepare(conn, &cookie, &cookielen,
+ uri_in, uri_out,
+ args->flags, dname, args->resource) < 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;
+ /* remoteDispatchClientRequest will free cookie, uri_out and
+ * the string if there is one.
+ */
+ ret->cookie.cookie_len = cookielen;
+ ret->cookie.cookie_val = cookie;
+ if (*uri_out == NULL) {
+ ret->uri_out = NULL;
+ } else {
+ ret->uri_out = uri_out;
+ uri_out = NULL;
+ }
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
+ VIR_FREE(uri_out);
return rv;
}
static int
-remoteDispatchDomainGetMaxMemory(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_max_memory_args *args,
- remote_domain_get_max_memory_ret *ret)
+remoteDispatchDomainMigratePerform(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_migrate_perform_args *args,
+ void *ret ATTRIBUTE_UNUSED)
{
virDomainPtr dom = NULL;
+ char *dname;
int rv = -1;
if (!conn) {
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if ((ret->memory = virDomainGetMaxMemory(dom)) == 0)
+ dname = args->dname == NULL ? NULL : *args->dname;
+
+ if (virDomainMigratePerform(dom,
+ args->cookie.cookie_val,
+ args->cookie.cookie_len,
+ args->uri,
+ args->flags, dname, args->resource) < 0)
goto cleanup;
rv = 0;
}
static int
-remoteDispatchDomainGetMaxVcpus(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_max_vcpus_args *args,
- remote_domain_get_max_vcpus_ret *ret)
+remoteDispatchDomainMigrateFinish(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_migrate_finish_args *args,
+ remote_domain_migrate_finish_ret *ret)
{
virDomainPtr dom = NULL;
int rv = -1;
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
-
- if ((ret->num = virDomainGetMaxVcpus(dom)) < 0)
+ if (!(dom = virDomainMigrateFinish(conn, args->dname,
+ args->cookie.cookie_val,
+ args->cookie.cookie_len,
+ args->uri,
+ args->flags)))
goto cleanup;
+ make_nonnull_domain(&ret->ddom, dom);
rv = 0;
cleanup:
}
static int
-remoteDispatchDomainGetSecurityLabel(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_security_label_args *args,
- remote_domain_get_security_label_ret *ret)
+remoteDispatchDomainMigratePrepare2(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_migrate_prepare2_args *args,
+ remote_domain_migrate_prepare2_ret *ret)
{
- virDomainPtr dom = NULL;
- virSecurityLabelPtr seclabel = NULL;
+ char *cookie = NULL;
+ int cookielen = 0;
+ char *uri_in;
+ char **uri_out;
+ char *dname;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
+ uri_in = args->uri_in == NULL ? NULL : *args->uri_in;
+ dname = args->dname == NULL ? NULL : *args->dname;
- if (VIR_ALLOC(seclabel) < 0) {
+ /* Wacky world of XDR ... */
+ if (VIR_ALLOC(uri_out) < 0) {
virReportOOMError();
goto cleanup;
}
- if (virDomainGetSecurityLabel(dom, seclabel) < 0)
+ if (virDomainMigratePrepare2(conn, &cookie, &cookielen,
+ uri_in, uri_out,
+ args->flags, dname, args->resource,
+ args->dom_xml) < 0)
goto cleanup;
- ret->label.label_len = strlen(seclabel->label) + 1;
- if (VIR_ALLOC_N(ret->label.label_val, ret->label.label_len) < 0) {
- virReportOOMError();
- goto cleanup;
- }
- strcpy(ret->label.label_val, seclabel->label);
- ret->enforcing = seclabel->enforcing;
+ /* remoteDispatchClientRequest will free cookie, uri_out and
+ * the string if there is one.
+ */
+ ret->cookie.cookie_len = cookielen;
+ ret->cookie.cookie_val = cookie;
+ ret->uri_out = *uri_out == NULL ? NULL : uri_out;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- VIR_FREE(seclabel);
return rv;
}
static int
-remoteDispatchNodeGetSecurityModel(struct qemud_server *server ATTRIBUTE_UNUSED,
+remoteDispatchDomainMigrateFinish2(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_security_model_ret *ret)
+ remote_domain_migrate_finish2_args *args,
+ remote_domain_migrate_finish2_ret *ret)
{
- virSecurityModel secmodel;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- memset(&secmodel, 0, sizeof secmodel);
- if (virNodeGetSecurityModel(conn, &secmodel) < 0)
- goto cleanup;
-
- ret->model.model_len = strlen(secmodel.model) + 1;
- if (VIR_ALLOC_N(ret->model.model_val, ret->model.model_len) < 0) {
- virReportOOMError();
+ if (!(dom = virDomainMigrateFinish2(conn, args->dname,
+ args->cookie.cookie_val,
+ args->cookie.cookie_len,
+ args->uri,
+ args->flags,
+ args->retcode)))
goto cleanup;
- }
- strcpy(ret->model.model_val, secmodel.model);
- ret->doi.doi_len = strlen(secmodel.doi) + 1;
- if (VIR_ALLOC_N(ret->doi.doi_val, ret->doi.doi_len) < 0) {
- virReportOOMError();
- goto cleanup;
- }
- strcpy(ret->doi.doi_val, secmodel.doi);
+ make_nonnull_domain(&ret->ddom, dom);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
static int
-remoteDispatchDomainGetOsType(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_os_type_args *args,
- remote_domain_get_os_type_ret *ret)
+remoteDispatchDomainMigratePrepareTunnel(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client,
+ virConnectPtr conn,
+ remote_message_header *hdr,
+ remote_error *rerr,
+ remote_domain_migrate_prepare_tunnel_args *args,
+ void *ret ATTRIBUTE_UNUSED)
{
- virDomainPtr dom = NULL;
+ char *dname;
+ struct qemud_client_stream *stream = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
+ dname = args->dname == NULL ? NULL : *args->dname;
+
+ if (!(stream = remoteCreateClientStream(conn, hdr))) {
+ virReportOOMError();
+ goto cleanup;
+ }
+
+ if (virDomainMigratePrepareTunnel(conn, stream->st,
+ args->flags, dname, args->resource,
+ args->dom_xml) < 0)
goto cleanup;
- /* remoteDispatchClientRequest will free this */
- if (!(ret->type = virDomainGetOSType(dom)))
+ if (remoteAddClientStream(client, stream, 0) < 0)
goto cleanup;
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
+ if (stream) {
+ virStreamAbort(stream->st);
+ remoteFreeClientStream(client, stream);
+ }
+ }
return rv;
}
static int
-remoteDispatchDomainGetVcpus(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_vcpus_args *args,
- remote_domain_get_vcpus_ret *ret)
+remoteDispatchListDefinedDomains(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_list_defined_domains_args *args,
+ remote_list_defined_domains_ret *ret)
{
- virDomainPtr dom = NULL;
- virVcpuInfoPtr info = NULL;
- unsigned char *cpumaps = NULL;
- int info_len, i;
int rv = -1;
+ int len;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
-
- if (args->maxinfo > REMOTE_VCPUINFO_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("maxinfo > REMOTE_VCPUINFO_MAX"));
+ if (args->maxnames > REMOTE_DOMAIN_NAME_LIST_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR,
+ "%s", _("maxnames > REMOTE_DOMAIN_NAME_LIST_MAX"));
goto cleanup;
}
- if (args->maxinfo * args->maplen > REMOTE_CPUMAPS_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("maxinfo * maplen > REMOTE_CPUMAPS_MAX"));
+ /* Allocate return buffer. */
+ if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
+ virReportOOMError();
goto cleanup;
}
- /* Allocate buffers to take the results. */
- if (VIR_ALLOC_N(info, args->maxinfo) < 0)
- goto no_memory;
- if (args->maplen > 0 &&
- VIR_ALLOC_N(cpumaps, args->maxinfo * args->maplen) < 0)
- goto no_memory;
-
- if ((info_len = virDomainGetVcpus(dom,
- info, args->maxinfo,
- cpumaps, args->maplen)) < 0)
+ len = virConnectListDefinedDomains(conn,
+ ret->names.names_val, args->maxnames);
+ if (len < 0)
goto cleanup;
-
- /* Allocate the return buffer for info. */
- ret->info.info_len = info_len;
- if (VIR_ALLOC_N(ret->info.info_val, info_len) < 0)
- goto no_memory;
-
- for (i = 0; i < info_len; ++i) {
- ret->info.info_val[i].number = info[i].number;
- ret->info.info_val[i].state = info[i].state;
- ret->info.info_val[i].cpu_time = info[i].cpuTime;
- ret->info.info_val[i].cpu = info[i].cpu;
- }
-
- /* Don't need to allocate/copy the cpumaps if we make the reasonable
- * assumption that unsigned char and char are the same size.
- * Note that remoteDispatchClientRequest will free.
- */
- ret->cpumaps.cpumaps_len = args->maxinfo * args->maplen;
- ret->cpumaps.cpumaps_val = (char *) cpumaps;
- cpumaps = NULL;
+ ret->names.names_len = len;
rv = 0;
cleanup:
if (rv < 0) {
remoteDispatchError(rerr);
- VIR_FREE(ret->info.info_val);
+ VIR_FREE(ret->names.names_val);
}
- VIR_FREE(cpumaps);
- VIR_FREE(info);
- if (dom)
- virDomainFree(dom);
return rv;
-
-no_memory:
- virReportOOMError();
- goto cleanup;
}
static int
-remoteDispatchDomainGetVcpusFlags(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_vcpus_flags_args *args,
- remote_domain_get_vcpus_flags_ret *ret)
+remoteDispatchDomainLookupById(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_lookup_by_id_args *args,
+ remote_domain_lookup_by_id_ret *ret)
{
virDomainPtr dom = NULL;
int rv = -1;
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
+ if (!(dom = virDomainLookupByID(conn, args->id)))
goto cleanup;
- if ((ret->num = virDomainGetVcpusFlags(dom, args->flags)) < 0)
- goto cleanup;
+ make_nonnull_domain(&ret->dom, dom);
rv = 0;
}
static int
-remoteDispatchDomainMigratePrepare(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_migrate_prepare_args *args,
- remote_domain_migrate_prepare_ret *ret)
+remoteDispatchDomainLookupByName(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_lookup_by_name_args *args,
+ remote_domain_lookup_by_name_ret *ret)
{
- char *cookie = NULL;
- int cookielen = 0;
- char *uri_in;
- char **uri_out;
- char *dname;
+ virDomainPtr dom = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- uri_in = args->uri_in == NULL ? NULL : *args->uri_in;
- dname = args->dname == NULL ? NULL : *args->dname;
-
- /* Wacky world of XDR ... */
- if (VIR_ALLOC(uri_out) < 0) {
- virReportOOMError();
- goto cleanup;
- }
-
- if (virDomainMigratePrepare(conn, &cookie, &cookielen,
- uri_in, uri_out,
- args->flags, dname, args->resource) < 0)
+ if (!(dom = virDomainLookupByName(conn, args->name)))
goto cleanup;
- /* remoteDispatchClientRequest will free cookie, uri_out and
- * the string if there is one.
- */
- ret->cookie.cookie_len = cookielen;
- ret->cookie.cookie_val = cookie;
- if (*uri_out == NULL) {
- ret->uri_out = NULL;
- } else {
- ret->uri_out = uri_out;
- uri_out = NULL;
- }
+ make_nonnull_domain(&ret->dom, dom);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- VIR_FREE(uri_out);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
static int
-remoteDispatchDomainMigratePerform(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_migrate_perform_args *args,
- void *ret ATTRIBUTE_UNUSED)
+remoteDispatchDomainLookupByUUID(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_lookup_by_uuid_args *args,
+ remote_domain_lookup_by_uuid_ret *ret)
{
virDomainPtr dom = NULL;
- char *dname;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
+ if (!(dom = virDomainLookupByUUID(conn, (unsigned char *) args->uuid)))
goto cleanup;
- dname = args->dname == NULL ? NULL : *args->dname;
-
- if (virDomainMigratePerform(dom,
- args->cookie.cookie_val,
- args->cookie.cookie_len,
- args->uri,
- args->flags, dname, args->resource) < 0)
- goto cleanup;
+ make_nonnull_domain(&ret->dom, dom);
rv = 0;
}
static int
-remoteDispatchDomainMigrateFinish(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_migrate_finish_args *args,
- remote_domain_migrate_finish_ret *ret)
+remoteDispatchDomainPinVcpu(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_pin_vcpu_args *args,
+ void *ret ATTRIBUTE_UNUSED)
{
virDomainPtr dom = NULL;
int rv = -1;
goto cleanup;
}
- if (!(dom = virDomainMigrateFinish(conn, args->dname,
- args->cookie.cookie_val,
- args->cookie.cookie_len,
- args->uri,
- args->flags)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
+
+ if (args->cpumap.cpumap_len > REMOTE_CPUMAP_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("cpumap_len > REMOTE_CPUMAP_MAX"));
+ goto cleanup;
+ }
+
+ if (virDomainPinVcpu(dom, args->vcpu,
+ (unsigned char *) args->cpumap.cpumap_val,
+ args->cpumap.cpumap_len) < 0)
goto cleanup;
- make_nonnull_domain(&ret->ddom, dom);
rv = 0;
cleanup:
}
static int
-remoteDispatchDomainMigratePrepare2(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_migrate_prepare2_args *args,
- remote_domain_migrate_prepare2_ret *ret)
+remoteDispatchDomainSetMemoryParameters(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_set_memory_parameters_args
+ * args, void *ret ATTRIBUTE_UNUSED)
{
- char *cookie = NULL;
- int cookielen = 0;
- char *uri_in;
- char **uri_out;
- char *dname;
+ virDomainPtr dom = NULL;
+ virMemoryParameterPtr params = NULL;
+ int i, nparams;
+ unsigned int flags;
int rv = -1;
if (!conn) {
goto cleanup;
}
- uri_in = args->uri_in == NULL ? NULL : *args->uri_in;
- dname = args->dname == NULL ? NULL : *args->dname;
+ nparams = args->params.params_len;
+ flags = args->flags;
- /* Wacky world of XDR ... */
- if (VIR_ALLOC(uri_out) < 0) {
- virReportOOMError();
+ if (nparams > REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
goto cleanup;
}
-
- if (virDomainMigratePrepare2(conn, &cookie, &cookielen,
- uri_in, uri_out,
- args->flags, dname, args->resource,
- args->dom_xml) < 0)
+ if (VIR_ALLOC_N(params, nparams) < 0) {
+ virReportOOMError();
goto cleanup;
+ }
- /* remoteDispatchClientRequest will free cookie, uri_out and
- * the string if there is one.
- */
- ret->cookie.cookie_len = cookielen;
- ret->cookie.cookie_val = cookie;
- ret->uri_out = *uri_out == NULL ? NULL : uri_out;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchDomainMigrateFinish2(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_migrate_finish2_args *args,
- remote_domain_migrate_finish2_ret *ret)
-{
- virDomainPtr dom = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
+ /* Deserialise parameters. */
+ for (i = 0; i < nparams; ++i) {
+ if (virStrcpyStatic
+ (params[i].field, args->params.params_val[i].field) == NULL) {
+ virNetError(VIR_ERR_INTERNAL_ERROR,
+ _("Field %s too big for destination"),
+ args->params.params_val[i].field);
+ goto cleanup;
+ }
+ params[i].type = args->params.params_val[i].value.type;
+ switch (params[i].type) {
+ case VIR_DOMAIN_MEMORY_PARAM_INT:
+ params[i].value.i =
+ args->params.params_val[i].value.
+ remote_memory_param_value_u.i;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_UINT:
+ params[i].value.ui =
+ args->params.params_val[i].value.
+ remote_memory_param_value_u.ui;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_LLONG:
+ params[i].value.l =
+ args->params.params_val[i].value.
+ remote_memory_param_value_u.l;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_ULLONG:
+ params[i].value.ul =
+ args->params.params_val[i].value.
+ remote_memory_param_value_u.ul;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_DOUBLE:
+ params[i].value.d =
+ args->params.params_val[i].value.
+ remote_memory_param_value_u.d;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_BOOLEAN:
+ params[i].value.b =
+ args->params.params_val[i].value.
+ remote_memory_param_value_u.b;
+ break;
+ }
}
- if (!(dom = virDomainMigrateFinish2(conn, args->dname,
- args->cookie.cookie_val,
- args->cookie.cookie_len,
- args->uri,
- args->flags,
- args->retcode)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- make_nonnull_domain(&ret->ddom, dom);
+ if (virDomainSetMemoryParameters(dom, params, nparams, flags) < 0)
+ goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
+ VIR_FREE(params);
if (dom)
virDomainFree(dom);
return rv;
}
static int
-remoteDispatchDomainMigratePrepareTunnel(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client,
- virConnectPtr conn,
- remote_message_header *hdr,
- remote_error *rerr,
- remote_domain_migrate_prepare_tunnel_args *args,
- void *ret ATTRIBUTE_UNUSED)
+remoteDispatchDomainGetMemoryParameters(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_memory_parameters_args
+ * args,
+ remote_domain_get_memory_parameters_ret
+ * ret)
{
- char *dname;
- struct qemud_client_stream *stream = NULL;
+ virDomainPtr dom = NULL;
+ virMemoryParameterPtr params = NULL;
+ int i;
+ int nparams = args->nparams;
+ unsigned int flags;
int rv = -1;
if (!conn) {
goto cleanup;
}
- dname = args->dname == NULL ? NULL : *args->dname;
+ flags = args->flags;
- if (!(stream = remoteCreateClientStream(conn, hdr))) {
+ if (nparams > REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
+ goto cleanup;
+ }
+ if (VIR_ALLOC_N(params, nparams) < 0) {
virReportOOMError();
goto cleanup;
}
- if (virDomainMigratePrepareTunnel(conn, stream->st,
- args->flags, dname, args->resource,
- args->dom_xml) < 0)
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (remoteAddClientStream(client, stream, 0) < 0)
+ if (virDomainGetMemoryParameters(dom, params, &nparams, flags) < 0)
goto cleanup;
- rv = 0;
-
-cleanup:
- if (rv < 0) {
- remoteDispatchError(rerr);
- if (stream) {
- virStreamAbort(stream->st);
- remoteFreeClientStream(client, stream);
- }
+ /* In this case, we need to send back the number of parameters
+ * supported
+ */
+ if (args->nparams == 0) {
+ ret->nparams = nparams;
+ goto success;
}
- return rv;
-}
-
-static int
-remoteDispatchListDefinedDomains(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_list_defined_domains_args *args,
- remote_list_defined_domains_ret *ret)
-{
- int rv = -1;
- int len;
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
+ /* Serialise the memory parameters. */
+ ret->params.params_len = nparams;
+ if (VIR_ALLOC_N(ret->params.params_val, nparams) < 0)
+ goto no_memory;
- if (args->maxnames > REMOTE_DOMAIN_NAME_LIST_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("maxnames > REMOTE_DOMAIN_NAME_LIST_MAX"));
- goto cleanup;
- }
+ for (i = 0; i < nparams; ++i) {
+ /* remoteDispatchClientRequest will free this: */
+ ret->params.params_val[i].field = strdup(params[i].field);
+ if (ret->params.params_val[i].field == NULL)
+ goto no_memory;
- /* Allocate return buffer. */
- if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
- virReportOOMError();
- goto cleanup;
+ ret->params.params_val[i].value.type = params[i].type;
+ switch (params[i].type) {
+ case VIR_DOMAIN_MEMORY_PARAM_INT:
+ ret->params.params_val[i].
+ value.remote_memory_param_value_u.i =
+ params[i].value.i;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_UINT:
+ ret->params.params_val[i].
+ value.remote_memory_param_value_u.ui =
+ params[i].value.ui;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_LLONG:
+ ret->params.params_val[i].
+ value.remote_memory_param_value_u.l =
+ params[i].value.l;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_ULLONG:
+ ret->params.params_val[i].
+ value.remote_memory_param_value_u.ul =
+ params[i].value.ul;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_DOUBLE:
+ ret->params.params_val[i].
+ value.remote_memory_param_value_u.d =
+ params[i].value.d;
+ break;
+ case VIR_DOMAIN_MEMORY_PARAM_BOOLEAN:
+ ret->params.params_val[i].
+ value.remote_memory_param_value_u.b =
+ params[i].value.b;
+ break;
+ default:
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("unknown type"));
+ goto cleanup;
+ }
}
- len = virConnectListDefinedDomains(conn,
- ret->names.names_val, args->maxnames);
- if (len < 0)
- goto cleanup;
- ret->names.names_len = len;
-
+success:
rv = 0;
cleanup:
if (rv < 0) {
remoteDispatchError(rerr);
- VIR_FREE(ret->names.names_val);
+ if (ret->params.params_val) {
+ for (i = 0; i < nparams; i++)
+ VIR_FREE(ret->params.params_val[i].field);
+ VIR_FREE(ret->params.params_val);
+ }
}
+ if (dom)
+ virDomainFree(dom);
+ VIR_FREE(params);
return rv;
+
+no_memory:
+ virReportOOMError();
+ goto cleanup;
}
static int
-remoteDispatchDomainLookupById(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_lookup_by_id_args *args,
- remote_domain_lookup_by_id_ret *ret)
+remoteDispatchDomainSetBlkioParameters(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_set_blkio_parameters_args
+ * args, void *ret ATTRIBUTE_UNUSED)
{
virDomainPtr dom = NULL;
+ virBlkioParameterPtr params = NULL;
+ int i, nparams;
+ unsigned int flags;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dom = virDomainLookupByID(conn, args->id)))
- goto cleanup;
-
- make_nonnull_domain(&ret->dom, dom);
-
- rv = 0;
+ nparams = args->params.params_len;
+ flags = args->flags;
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
-remoteDispatchDomainLookupByName(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_lookup_by_name_args *args,
- remote_domain_lookup_by_name_ret *ret)
-{
- virDomainPtr dom = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(dom = virDomainLookupByName(conn, args->name)))
- goto cleanup;
-
- make_nonnull_domain(&ret->dom, dom);
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
-remoteDispatchDomainLookupByUUID(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_lookup_by_uuid_args *args,
- remote_domain_lookup_by_uuid_ret *ret)
-{
- virDomainPtr dom = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(dom = virDomainLookupByUUID(conn, (unsigned char *) args->uuid)))
- goto cleanup;
-
- make_nonnull_domain(&ret->dom, dom);
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
-remoteDispatchNumOfDefinedDomains(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_num_of_defined_domains_ret *ret)
-{
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if ((ret->num = virConnectNumOfDefinedDomains(conn)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchDomainPinVcpu(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_pin_vcpu_args *args,
- void *ret ATTRIBUTE_UNUSED)
-{
- virDomainPtr dom = NULL;
- 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 (args->cpumap.cpumap_len > REMOTE_CPUMAP_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("cpumap_len > REMOTE_CPUMAP_MAX"));
- goto cleanup;
- }
-
- if (virDomainPinVcpu(dom, args->vcpu,
- (unsigned char *) args->cpumap.cpumap_val,
- args->cpumap.cpumap_len) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
-remoteDispatchDomainSetMemoryParameters(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_set_memory_parameters_args
- * args, void *ret ATTRIBUTE_UNUSED)
-{
- virDomainPtr dom = NULL;
- virMemoryParameterPtr params = NULL;
- int i, nparams;
- unsigned int flags;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- nparams = args->params.params_len;
- flags = args->flags;
-
- if (nparams > REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
- goto cleanup;
- }
- if (VIR_ALLOC_N(params, nparams) < 0) {
- virReportOOMError();
- goto cleanup;
- }
+ if (nparams > REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
+ goto cleanup;
+ }
+ if (VIR_ALLOC_N(params, nparams) < 0) {
+ virReportOOMError();
+ goto cleanup;
+ }
/* Deserialise parameters. */
for (i = 0; i < nparams; ++i) {
}
params[i].type = args->params.params_val[i].value.type;
switch (params[i].type) {
- case VIR_DOMAIN_MEMORY_PARAM_INT:
+ case VIR_DOMAIN_BLKIO_PARAM_INT:
params[i].value.i =
args->params.params_val[i].value.
- remote_memory_param_value_u.i;
+ remote_blkio_param_value_u.i;
break;
- case VIR_DOMAIN_MEMORY_PARAM_UINT:
+ case VIR_DOMAIN_BLKIO_PARAM_UINT:
params[i].value.ui =
args->params.params_val[i].value.
- remote_memory_param_value_u.ui;
+ remote_blkio_param_value_u.ui;
break;
- case VIR_DOMAIN_MEMORY_PARAM_LLONG:
+ case VIR_DOMAIN_BLKIO_PARAM_LLONG:
params[i].value.l =
args->params.params_val[i].value.
- remote_memory_param_value_u.l;
+ remote_blkio_param_value_u.l;
break;
- case VIR_DOMAIN_MEMORY_PARAM_ULLONG:
+ case VIR_DOMAIN_BLKIO_PARAM_ULLONG:
params[i].value.ul =
args->params.params_val[i].value.
- remote_memory_param_value_u.ul;
+ remote_blkio_param_value_u.ul;
break;
- case VIR_DOMAIN_MEMORY_PARAM_DOUBLE:
+ case VIR_DOMAIN_BLKIO_PARAM_DOUBLE:
params[i].value.d =
args->params.params_val[i].value.
- remote_memory_param_value_u.d;
+ remote_blkio_param_value_u.d;
break;
- case VIR_DOMAIN_MEMORY_PARAM_BOOLEAN:
+ case VIR_DOMAIN_BLKIO_PARAM_BOOLEAN:
params[i].value.b =
args->params.params_val[i].value.
- remote_memory_param_value_u.b;
+ remote_blkio_param_value_u.b;
break;
}
}
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainSetMemoryParameters(dom, params, nparams, flags) < 0)
+ if (virDomainSetBlkioParameters(dom, params, nparams, flags) < 0)
goto cleanup;
rv = 0;
}
static int
-remoteDispatchDomainGetMemoryParameters(struct qemud_server *server
+remoteDispatchDomainGetBlkioParameters(struct qemud_server *server
ATTRIBUTE_UNUSED,
struct qemud_client *client
ATTRIBUTE_UNUSED,
remote_message_header *
hdr ATTRIBUTE_UNUSED,
remote_error * rerr,
- remote_domain_get_memory_parameters_args
+ remote_domain_get_blkio_parameters_args
* args,
- remote_domain_get_memory_parameters_ret
+ remote_domain_get_blkio_parameters_ret
* ret)
{
virDomainPtr dom = NULL;
- virMemoryParameterPtr params = NULL;
+ virBlkioParameterPtr params = NULL;
int i;
int nparams = args->nparams;
unsigned int flags;
flags = args->flags;
- if (nparams > REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX) {
+ if (nparams > REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
goto cleanup;
}
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainGetMemoryParameters(dom, params, &nparams, flags) < 0)
+ if (virDomainGetBlkioParameters(dom, params, &nparams, flags) < 0)
goto cleanup;
/* In this case, we need to send back the number of parameters
goto success;
}
- /* Serialise the memory parameters. */
+ /* Serialise the blkio parameters. */
ret->params.params_len = nparams;
if (VIR_ALLOC_N(ret->params.params_val, nparams) < 0)
goto no_memory;
for (i = 0; i < nparams; ++i) {
- /* remoteDispatchClientRequest will free this: */
+ // remoteDispatchClientRequest will free this:
ret->params.params_val[i].field = strdup(params[i].field);
if (ret->params.params_val[i].field == NULL)
goto no_memory;
ret->params.params_val[i].value.type = params[i].type;
switch (params[i].type) {
- case VIR_DOMAIN_MEMORY_PARAM_INT:
+ case VIR_DOMAIN_BLKIO_PARAM_INT:
ret->params.params_val[i].
- value.remote_memory_param_value_u.i =
+ value.remote_blkio_param_value_u.i =
params[i].value.i;
break;
- case VIR_DOMAIN_MEMORY_PARAM_UINT:
+ case VIR_DOMAIN_BLKIO_PARAM_UINT:
ret->params.params_val[i].
- value.remote_memory_param_value_u.ui =
+ value.remote_blkio_param_value_u.ui =
params[i].value.ui;
break;
- case VIR_DOMAIN_MEMORY_PARAM_LLONG:
+ case VIR_DOMAIN_BLKIO_PARAM_LLONG:
ret->params.params_val[i].
- value.remote_memory_param_value_u.l =
+ value.remote_blkio_param_value_u.l =
params[i].value.l;
break;
- case VIR_DOMAIN_MEMORY_PARAM_ULLONG:
+ case VIR_DOMAIN_BLKIO_PARAM_ULLONG:
ret->params.params_val[i].
- value.remote_memory_param_value_u.ul =
+ value.remote_blkio_param_value_u.ul =
params[i].value.ul;
break;
- case VIR_DOMAIN_MEMORY_PARAM_DOUBLE:
+ case VIR_DOMAIN_BLKIO_PARAM_DOUBLE:
ret->params.params_val[i].
- value.remote_memory_param_value_u.d =
+ value.remote_blkio_param_value_u.d =
params[i].value.d;
break;
- case VIR_DOMAIN_MEMORY_PARAM_BOOLEAN:
+ case VIR_DOMAIN_BLKIO_PARAM_BOOLEAN:
ret->params.params_val[i].
- value.remote_memory_param_value_u.b =
+ value.remote_blkio_param_value_u.b =
params[i].value.b;
break;
default:
VIR_FREE(ret->params.params_val);
}
}
+ VIR_FREE(params);
if (dom)
virDomainFree(dom);
- VIR_FREE(params);
return rv;
no_memory:
}
static int
-remoteDispatchDomainSetBlkioParameters(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_set_blkio_parameters_args
- * args, void *ret ATTRIBUTE_UNUSED)
+remoteDispatchListDefinedNetworks(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_list_defined_networks_args *args,
+ remote_list_defined_networks_ret *ret)
{
- virDomainPtr dom = NULL;
- virBlkioParameterPtr params = NULL;
- int i, nparams;
- unsigned int flags;
int rv = -1;
+ int len;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- nparams = args->params.params_len;
- flags = args->flags;
-
- if (nparams > REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
- goto cleanup;
- }
- if (VIR_ALLOC_N(params, nparams) < 0) {
- virReportOOMError();
- goto cleanup;
- }
-
- /* Deserialise parameters. */
- for (i = 0; i < nparams; ++i) {
- if (virStrcpyStatic
- (params[i].field, args->params.params_val[i].field) == NULL) {
- virNetError(VIR_ERR_INTERNAL_ERROR,
- _("Field %s too big for destination"),
- args->params.params_val[i].field);
- goto cleanup;
- }
- params[i].type = args->params.params_val[i].value.type;
- switch (params[i].type) {
- case VIR_DOMAIN_BLKIO_PARAM_INT:
- params[i].value.i =
- args->params.params_val[i].value.
- remote_blkio_param_value_u.i;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_UINT:
- params[i].value.ui =
- args->params.params_val[i].value.
- remote_blkio_param_value_u.ui;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_LLONG:
- params[i].value.l =
- args->params.params_val[i].value.
- remote_blkio_param_value_u.l;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_ULLONG:
- params[i].value.ul =
- args->params.params_val[i].value.
- remote_blkio_param_value_u.ul;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_DOUBLE:
- params[i].value.d =
- args->params.params_val[i].value.
- remote_blkio_param_value_u.d;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_BOOLEAN:
- params[i].value.b =
- args->params.params_val[i].value.
- remote_blkio_param_value_u.b;
- break;
- }
- }
-
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
-
- if (virDomainSetBlkioParameters(dom, params, nparams, flags) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- VIR_FREE(params);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
-remoteDispatchDomainGetBlkioParameters(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_blkio_parameters_args
- * args,
- remote_domain_get_blkio_parameters_ret
- * ret)
-{
- virDomainPtr dom = NULL;
- virBlkioParameterPtr params = NULL;
- int i;
- int nparams = args->nparams;
- unsigned int flags;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- flags = args->flags;
-
- if (nparams > REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
- goto cleanup;
- }
- if (VIR_ALLOC_N(params, nparams) < 0) {
- virReportOOMError();
- goto cleanup;
- }
-
- if (!(dom = get_nonnull_domain(conn, args->dom)))
- goto cleanup;
-
- if (virDomainGetBlkioParameters(dom, params, &nparams, flags) < 0)
- goto cleanup;
-
- /* In this case, we need to send back the number of parameters
- * supported
- */
- if (args->nparams == 0) {
- ret->nparams = nparams;
- goto success;
- }
-
- /* Serialise the blkio parameters. */
- ret->params.params_len = nparams;
- if (VIR_ALLOC_N(ret->params.params_val, nparams) < 0)
- goto no_memory;
-
- for (i = 0; i < nparams; ++i) {
- // remoteDispatchClientRequest will free this:
- ret->params.params_val[i].field = strdup(params[i].field);
- if (ret->params.params_val[i].field == NULL)
- goto no_memory;
-
- ret->params.params_val[i].value.type = params[i].type;
- switch (params[i].type) {
- case VIR_DOMAIN_BLKIO_PARAM_INT:
- ret->params.params_val[i].
- value.remote_blkio_param_value_u.i =
- params[i].value.i;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_UINT:
- ret->params.params_val[i].
- value.remote_blkio_param_value_u.ui =
- params[i].value.ui;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_LLONG:
- ret->params.params_val[i].
- value.remote_blkio_param_value_u.l =
- params[i].value.l;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_ULLONG:
- ret->params.params_val[i].
- value.remote_blkio_param_value_u.ul =
- params[i].value.ul;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_DOUBLE:
- ret->params.params_val[i].
- value.remote_blkio_param_value_u.d =
- params[i].value.d;
- break;
- case VIR_DOMAIN_BLKIO_PARAM_BOOLEAN:
- ret->params.params_val[i].
- value.remote_blkio_param_value_u.b =
- params[i].value.b;
- break;
- default:
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("unknown type"));
- goto cleanup;
- }
- }
-
-success:
- rv = 0;
-
-cleanup:
- if (rv < 0) {
- remoteDispatchError(rerr);
- if (ret->params.params_val) {
- for (i = 0; i < nparams; i++)
- VIR_FREE(ret->params.params_val[i].field);
- VIR_FREE(ret->params.params_val);
- }
- }
- VIR_FREE(params);
- if (dom)
- virDomainFree(dom);
- return rv;
-
-no_memory:
- virReportOOMError();
- goto cleanup;
-}
-
-static int
-remoteDispatchListDefinedNetworks(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_list_defined_networks_args *args,
- remote_list_defined_networks_ret *ret)
-{
- int rv = -1;
- int len;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (args->maxnames > REMOTE_NETWORK_NAME_LIST_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("maxnames > REMOTE_NETWORK_NAME_LIST_MAX"));
+ if (args->maxnames > REMOTE_NETWORK_NAME_LIST_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR,
+ "%s", _("maxnames > REMOTE_NETWORK_NAME_LIST_MAX"));
goto cleanup;
}
return rv;
}
-static int
-remoteDispatchDomainHasManagedSaveImage(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_has_managed_save_image_args *args,
- remote_domain_has_managed_save_image_ret *ret)
-{
- virDomainPtr dom = NULL;
- 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 ((ret->result = virDomainHasManagedSaveImage(dom, args->flags)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
static int
remoteDispatchListNetworks(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
}
static int
-remoteDispatchNetworkDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_network_dump_xml_args *args,
- remote_network_dump_xml_ret *ret)
+remoteDispatchNetworkLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_lookup_by_name_args *args,
+ remote_network_lookup_by_name_ret *ret)
{
virNetworkPtr net = NULL;
int rv = -1;
goto cleanup;
}
- if (!(net = get_nonnull_network(conn, args->net)))
+ if (!(net = virNetworkLookupByName(conn, args->name)))
goto cleanup;
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->xml = virNetworkGetXMLDesc(net, args->flags)))
- goto cleanup;
+ make_nonnull_network(&ret->net, net);
rv = 0;
}
static int
-remoteDispatchNetworkGetAutostart(struct qemud_server *server ATTRIBUTE_UNUSED,
+remoteDispatchNetworkLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_network_get_autostart_args *args,
- remote_network_get_autostart_ret *ret)
-{
- virNetworkPtr net = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(net = get_nonnull_network(conn, args->net)))
- goto cleanup;
-
- if (virNetworkGetAutostart(net, &ret->autostart) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (net)
- virNetworkFree(net);
- return rv;
-}
-
-static int
-remoteDispatchNetworkGetBridgeName(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_network_get_bridge_name_args *args,
- remote_network_get_bridge_name_ret *ret)
-{
- virNetworkPtr net = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(net = get_nonnull_network(conn, args->net)))
- goto cleanup;
-
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->name = virNetworkGetBridgeName(net)))
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (net)
- virNetworkFree(net);
- return rv;
-}
-
-static int
-remoteDispatchNetworkLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_network_lookup_by_name_args *args,
- remote_network_lookup_by_name_ret *ret)
-{
- virNetworkPtr net = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(net = virNetworkLookupByName(conn, args->name)))
- goto cleanup;
-
- make_nonnull_network(&ret->net, net);
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (net)
- virNetworkFree(net);
- return rv;
-}
-
-static int
-remoteDispatchNetworkLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_network_lookup_by_uuid_args *args,
- remote_network_lookup_by_uuid_ret *ret)
+ remote_network_lookup_by_uuid_args *args,
+ remote_network_lookup_by_uuid_ret *ret)
{
virNetworkPtr net = NULL;
int rv = -1;
return rv;
}
-static int
-remoteDispatchNumOfDefinedNetworks(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_num_of_defined_networks_ret *ret)
-{
- int rv = -1;
- int len;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- len = virConnectNumOfDefinedNetworks(conn);
- if (len < 0)
- goto cleanup;
- ret->num = len;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchNumOfDomains(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_num_of_domains_ret *ret)
-{
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if ((ret->num = virConnectNumOfDomains(conn)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchNumOfNetworks(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_num_of_networks_ret *ret)
-{
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if ((ret->num = virConnectNumOfNetworks(conn)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-
/*-------------------------------------------------------------*/
-static int
-remoteDispatchNumOfInterfaces(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_num_of_interfaces_ret *ret)
-{
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if ((ret->num = virConnectNumOfInterfaces(conn)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
static int
remoteDispatchListInterfaces(struct qemud_server *server ATTRIBUTE_UNUSED,
return rv;
}
-static int
-remoteDispatchNumOfDefinedInterfaces(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_num_of_defined_interfaces_ret *ret)
-{
- int rv = -1;
- int len;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- len = virConnectNumOfDefinedInterfaces(conn);
- if (len < 0)
- goto cleanup;
- ret->num = len;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
static int
remoteDispatchListDefinedInterfaces(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
return rv;
}
-static int
-remoteDispatchInterfaceGetXMLDesc(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_interface_get_xml_desc_args *args,
- remote_interface_get_xml_desc_ret *ret)
-{
- virInterfacePtr iface = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(iface = get_nonnull_interface(conn, args->iface)))
- goto cleanup;
-
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->xml = virInterfaceGetXMLDesc(iface, args->flags)))
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (iface)
- virInterfaceFree(iface);
- return rv;
-}
-
static int
remoteDispatchInterfaceDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
PROBE(CLIENT_AUTH_ALLOW, "fd=%d, auth=%d, username=%s",
client->fd, REMOTE_AUTH_POLKIT, ident);
VIR_INFO(_("Policy allowed action %s from pid %d, uid %d, result %s"),
- action, callerPid, callerUid,
- polkit_result_to_string_representation(pkresult));
- ret->complete = 1;
- client->auth = REMOTE_AUTH_NONE;
-
- virMutexUnlock(&client->lock);
- return 0;
-
-authfail:
- PROBE(CLIENT_AUTH_FAIL, "fd=%d, auth=%d", client->fd, REMOTE_AUTH_POLKIT);
- goto error;
-
-authdeny:
- PROBE(CLIENT_AUTH_DENY, "fd=%d, auth=%d, username=%s",
- client->fd, REMOTE_AUTH_POLKIT, ident);
- goto error;
-
-error:
- remoteDispatchAuthError(rerr);
- virMutexUnlock(&client->lock);
- return -1;
-}
-
-#else /* !HAVE_POLKIT0 & !HAVE_POLKIT1*/
-
-static int
-remoteDispatchAuthPolkit(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn ATTRIBUTE_UNUSED,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- void *args ATTRIBUTE_UNUSED,
- remote_auth_polkit_ret *ret ATTRIBUTE_UNUSED)
-{
- VIR_ERROR0(_("client tried unsupported PolicyKit init request"));
- remoteDispatchAuthError(rerr);
- return -1;
-}
-#endif /* HAVE_POLKIT1 */
-
-
-/***************************************************************
- * STORAGE POOL APIS
- ***************************************************************/
-
-
-static int
-remoteDispatchListDefinedStoragePools(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_list_defined_storage_pools_args *args,
- remote_list_defined_storage_pools_ret *ret)
-{
- int rv = -1;
- int len;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (args->maxnames > REMOTE_NETWORK_NAME_LIST_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("maxnames > REMOTE_NETWORK_NAME_LIST_MAX"));
- goto cleanup;
- }
-
- /* Allocate return buffer. */
- if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
- virReportOOMError();
- goto cleanup;
- }
-
- len = virConnectListDefinedStoragePools(conn,
- ret->names.names_val, args->maxnames);
- if (len < 0)
- goto cleanup;
- ret->names.names_len = len;
-
- rv = 0;
-
-cleanup:
- if (rv < 0) {
- remoteDispatchError(rerr);
- VIR_FREE(ret->names.names_val);
- }
- return rv;
-}
-
-static int
-remoteDispatchListStoragePools(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_list_storage_pools_args *args,
- remote_list_storage_pools_ret *ret)
-{
- int rv = -1;
- int len;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (args->maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX"));
- goto cleanup;
- }
-
- /* Allocate return buffer. */
- if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
- virReportOOMError();
- goto cleanup;
- }
-
- len = virConnectListStoragePools(conn,
- ret->names.names_val, args->maxnames);
- if (len < 0)
- goto cleanup;
- ret->names.names_len = len;
-
- rv = 0;
-
-cleanup:
- if (rv < 0) {
- remoteDispatchError(rerr);
- VIR_FREE(ret->names.names_val);
- }
- return rv;
-}
-
-static int
-remoteDispatchFindStoragePoolSources(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_find_storage_pool_sources_args *args,
- remote_find_storage_pool_sources_ret *ret)
-{
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(ret->xml =
- virConnectFindStoragePoolSources(conn,
- args->type,
- args->srcSpec ? *args->srcSpec : NULL,
- args->flags)))
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchStoragePoolCreateXML(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_create_xml_args *args,
- remote_storage_pool_create_xml_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(pool = virStoragePoolCreateXML(conn, args->xml, args->flags)))
- goto cleanup;
-
- make_nonnull_storage_pool(&ret->pool, pool);
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-static int
-remoteDispatchStoragePoolDefineXML(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_define_xml_args *args,
- remote_storage_pool_define_xml_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(pool = virStoragePoolDefineXML(conn, args->xml, args->flags)))
- goto cleanup;
-
- make_nonnull_storage_pool(&ret->pool, pool);
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-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;
-}
-
-static int
-remoteDispatchStoragePoolDumpXML(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_dump_xml_args *args,
- remote_storage_pool_dump_xml_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- 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;
-
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->xml = virStoragePoolGetXMLDesc(pool, args->flags)))
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-static int
-remoteDispatchStoragePoolGetAutostart(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_autostart_args *args,
- remote_storage_pool_get_autostart_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- 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 (virStoragePoolGetAutostart(pool, &ret->autostart) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-
-static int
-remoteDispatchStoragePoolLookupByName(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_lookup_by_name_args *args,
- remote_storage_pool_lookup_by_name_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(pool = virStoragePoolLookupByName(conn, args->name)))
- goto cleanup;
-
- make_nonnull_storage_pool(&ret->pool, pool);
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-static int
-remoteDispatchStoragePoolLookupByUUID(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_lookup_by_uuid_args *args,
- remote_storage_pool_lookup_by_uuid_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(pool = virStoragePoolLookupByUUID(conn, (unsigned char *) args->uuid)))
- goto cleanup;
-
- make_nonnull_storage_pool(&ret->pool, pool);
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-static int
-remoteDispatchStoragePoolLookupByVolume(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_lookup_by_volume_args *args,
- remote_storage_pool_lookup_by_volume_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- virStorageVolPtr vol = NULL;
- 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 (!(pool = virStoragePoolLookupByVolume(vol)))
- goto cleanup;
-
- make_nonnull_storage_pool(&ret->pool, pool);
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (vol)
- virStorageVolFree(vol);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-static int
-remoteDispatchNumOfStoragePools(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_num_of_storage_pools_ret *ret)
-{
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if ((ret->num = virConnectNumOfStoragePools(conn)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchNumOfDefinedStoragePools(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_num_of_defined_storage_pools_ret *ret)
-{
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if ((ret->num = virConnectNumOfDefinedStoragePools(conn)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-static int
-remoteDispatchStoragePoolListVolumes(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_list_volumes_args *args,
- remote_storage_pool_list_volumes_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- int rv = -1;
- int len;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (args->maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX"));
- goto cleanup;
- }
-
- if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
- goto cleanup;
-
- /* Allocate return buffer. */
- if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
- virReportOOMError();
- goto cleanup;
- }
-
- len = virStoragePoolListVolumes(pool,
- ret->names.names_val, args->maxnames);
- if (len < 0)
- goto cleanup;
- ret->names.names_len = len;
-
- rv = 0;
-
-cleanup:
- if (rv < 0) {
- remoteDispatchError(rerr);
- VIR_FREE(ret->names.names_val);
- }
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-
-static int
-remoteDispatchStoragePoolNumOfVolumes(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_num_of_volumes_args *args,
- remote_storage_pool_num_of_volumes_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- 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 ((ret->num = virStoragePoolNumOfVolumes(pool)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-
-/***************************************************************
- * STORAGE VOL APIS
- ***************************************************************/
-
-
-
-static int
-remoteDispatchStorageVolCreateXML(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_create_xml_args *args,
- remote_storage_vol_create_xml_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- virStorageVolPtr vol = NULL;
- 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 (!(vol = virStorageVolCreateXML(pool, args->xml, args->flags)))
- goto cleanup;
-
- make_nonnull_storage_vol(&ret->vol, vol);
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- if (vol)
- virStorageVolFree(vol);
- return rv;
-}
-
-static int
-remoteDispatchStorageVolCreateXMLFrom(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_create_xml_from_args *args,
- remote_storage_vol_create_xml_from_ret *ret)
-{
- virStoragePoolPtr pool = NULL;
- virStorageVolPtr clonevol = NULL;
- virStorageVolPtr newvol = NULL;
- 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 (!(clonevol = get_nonnull_storage_vol(conn, args->clonevol)))
- goto cleanup;
-
- if (!(newvol = virStorageVolCreateXMLFrom(pool, args->xml, clonevol,
- args->flags)))
- goto cleanup;
-
- make_nonnull_storage_vol(&ret->vol, newvol);
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (newvol)
- virStorageVolFree(newvol);
- if (clonevol)
- virStorageVolFree(clonevol);
- if (pool)
- virStoragePoolFree(pool);
- return rv;
-}
-
-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;
-}
-
-static int
-remoteDispatchStorageVolDumpXML(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_dump_xml_args *args,
- remote_storage_vol_dump_xml_ret *ret)
-{
- virStorageVolPtr vol = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
+ action, callerPid, callerUid,
+ polkit_result_to_string_representation(pkresult));
+ ret->complete = 1;
+ client->auth = REMOTE_AUTH_NONE;
- if (!(vol = get_nonnull_storage_vol(conn, args->vol)))
- goto cleanup;
+ virMutexUnlock(&client->lock);
+ return 0;
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->xml = virStorageVolGetXMLDesc(vol, args->flags)))
- goto cleanup;
+authfail:
+ PROBE(CLIENT_AUTH_FAIL, "fd=%d, auth=%d", client->fd, REMOTE_AUTH_POLKIT);
+ goto error;
- rv = 0;
+authdeny:
+ PROBE(CLIENT_AUTH_DENY, "fd=%d, auth=%d, username=%s",
+ client->fd, REMOTE_AUTH_POLKIT, ident);
+ goto error;
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (vol)
- virStorageVolFree(vol);
- return rv;
+error:
+ remoteDispatchAuthError(rerr);
+ virMutexUnlock(&client->lock);
+ return -1;
}
+#else /* !HAVE_POLKIT0 & !HAVE_POLKIT1*/
static int
-remoteDispatchStorageVolGetPath(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_path_args *args,
- remote_storage_vol_get_path_ret *ret)
+remoteDispatchAuthPolkit(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn ATTRIBUTE_UNUSED,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ void *args ATTRIBUTE_UNUSED,
+ remote_auth_polkit_ret *ret ATTRIBUTE_UNUSED)
{
- virStorageVolPtr vol = NULL;
- 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;
-
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->name = virStorageVolGetPath(vol)))
- goto cleanup;
+ VIR_ERROR0(_("client tried unsupported PolicyKit init request"));
+ remoteDispatchAuthError(rerr);
+ return -1;
+}
+#endif /* HAVE_POLKIT1 */
- rv = 0;
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (vol)
- virStorageVolFree(vol);
- return rv;
-}
+/***************************************************************
+ * STORAGE POOL APIS
+ ***************************************************************/
static int
-remoteDispatchStorageVolLookupByName(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_lookup_by_name_args *args,
- remote_storage_vol_lookup_by_name_ret *ret)
+remoteDispatchListDefinedStoragePools(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_list_defined_storage_pools_args *args,
+ remote_list_defined_storage_pools_ret *ret)
{
- virStoragePoolPtr pool = NULL;
- virStorageVolPtr vol = NULL;
int rv = -1;
+ int len;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
+ if (args->maxnames > REMOTE_NETWORK_NAME_LIST_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("maxnames > REMOTE_NETWORK_NAME_LIST_MAX"));
goto cleanup;
+ }
- if (!(vol = virStorageVolLookupByName(pool, args->name)))
+ /* Allocate return buffer. */
+ if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
+ virReportOOMError();
goto cleanup;
+ }
- make_nonnull_storage_vol(&ret->vol, vol);
+ len = virConnectListDefinedStoragePools(conn,
+ ret->names.names_val, args->maxnames);
+ if (len < 0)
+ goto cleanup;
+ ret->names.names_len = len;
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
- if (vol)
- virStorageVolFree(vol);
+ VIR_FREE(ret->names.names_val);
+ }
return rv;
}
static int
-remoteDispatchStorageVolLookupByKey(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_lookup_by_key_args *args,
- remote_storage_vol_lookup_by_key_ret *ret)
+remoteDispatchListStoragePools(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_list_storage_pools_args *args,
+ remote_list_storage_pools_ret *ret)
{
- virStorageVolPtr vol = NULL;
int rv = -1;
+ int len;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(vol = virStorageVolLookupByKey(conn, args->key)))
+ if (args->maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR,
+ "%s", _("maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX"));
goto cleanup;
+ }
- make_nonnull_storage_vol(&ret->vol, vol);
+ /* Allocate return buffer. */
+ if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
+ virReportOOMError();
+ goto cleanup;
+ }
+
+ len = virConnectListStoragePools(conn,
+ ret->names.names_val, args->maxnames);
+ if (len < 0)
+ goto cleanup;
+ ret->names.names_len = len;
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (vol)
- virStorageVolFree(vol);
+ VIR_FREE(ret->names.names_val);
+ }
return rv;
}
-
static int
-remoteDispatchStorageVolLookupByPath(struct qemud_server *server ATTRIBUTE_UNUSED,
+remoteDispatchFindStoragePoolSources(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_lookup_by_path_args *args,
- remote_storage_vol_lookup_by_path_ret *ret)
+ remote_find_storage_pool_sources_args *args,
+ remote_find_storage_pool_sources_ret *ret)
{
- virStorageVolPtr vol = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(vol = virStorageVolLookupByPath(conn, args->path)))
+ if (!(ret->xml =
+ virConnectFindStoragePoolSources(conn,
+ args->type,
+ args->srcSpec ? *args->srcSpec : NULL,
+ args->flags)))
goto cleanup;
- make_nonnull_storage_vol(&ret->vol, vol);
-
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (vol)
- virStorageVolFree(vol);
return rv;
}
-
-/***************************************************************
- * NODE INFO APIS
- **************************************************************/
-
static int
-remoteDispatchNodeNumOfDevices(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_node_num_of_devices_args *args,
- remote_node_num_of_devices_ret *ret)
+remoteDispatchStoragePoolCreateXML(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_create_xml_args *args,
+ remote_storage_pool_create_xml_ret *ret)
{
+ virStoragePoolPtr pool = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if ((ret->num = virNodeNumOfDevices(conn,
- args->cap ? *args->cap : NULL,
- args->flags)) < 0)
+ if (!(pool = virStoragePoolCreateXML(conn, args->xml, args->flags)))
goto cleanup;
+ make_nonnull_storage_pool(&ret->pool, pool);
+
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
-
static int
-remoteDispatchNodeListDevices(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_node_list_devices_args *args,
- remote_node_list_devices_ret *ret)
+remoteDispatchStoragePoolDefineXML(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_define_xml_args *args,
+ remote_storage_pool_define_xml_ret *ret)
{
+ virStoragePoolPtr pool = NULL;
int rv = -1;
- int len;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (args->maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX"));
- goto cleanup;
- }
-
- /* Allocate return buffer. */
- if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
- virReportOOMError();
+ if (!(pool = virStoragePoolDefineXML(conn, args->xml, args->flags)))
goto cleanup;
- }
- len = virNodeListDevices(conn,
- args->cap ? *args->cap : NULL,
- ret->names.names_val, args->maxnames, args->flags);
- if (len < 0)
- goto cleanup;
- ret->names.names_len = len;
+ make_nonnull_storage_pool(&ret->pool, pool);
rv = 0;
cleanup:
- if (rv < 0) {
+ if (rv < 0)
remoteDispatchError(rerr);
- VIR_FREE(ret->names.names_val);
- }
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
-
static int
-remoteDispatchNodeDeviceLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_node_device_lookup_by_name_args *args,
- remote_node_device_lookup_by_name_ret *ret)
+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)
{
- virNodeDevicePtr dev = NULL;
+ virStoragePoolPtr pool = NULL;
+ virStoragePoolInfo info;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
+ goto cleanup;
+
+ if (virStoragePoolGetInfo(pool, &info) < 0)
goto cleanup;
- make_nonnull_node_device(&ret->dev, dev);
+ 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 (dev)
- virNodeDeviceFree(dev);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
-
static int
-remoteDispatchNodeDeviceDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_node_device_dump_xml_args *args,
- remote_node_device_dump_xml_ret *ret)
+remoteDispatchStoragePoolLookupByName(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_lookup_by_name_args *args,
+ remote_storage_pool_lookup_by_name_ret *ret)
{
- virNodeDevicePtr dev = NULL;
+ virStoragePoolPtr pool = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ if (!(pool = virStoragePoolLookupByName(conn, args->name)))
goto cleanup;
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->xml = virNodeDeviceGetXMLDesc(dev, args->flags)))
- goto cleanup;
+ make_nonnull_storage_pool(&ret->pool, pool);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dev)
- virNodeDeviceFree(dev);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
-
static int
-remoteDispatchNodeDeviceGetParent(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_node_device_get_parent_args *args,
- remote_node_device_get_parent_ret *ret)
+remoteDispatchStoragePoolLookupByUUID(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_lookup_by_uuid_args *args,
+ remote_storage_pool_lookup_by_uuid_ret *ret)
{
- virNodeDevicePtr dev = NULL;
- const char *parent = NULL;
+ virStoragePoolPtr pool = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ if (!(pool = virStoragePoolLookupByUUID(conn, (unsigned char *) args->uuid)))
goto cleanup;
- parent = virNodeDeviceGetParent(dev);
-
- if (parent == NULL) {
- ret->parent = NULL;
- } else {
- /* remoteDispatchClientRequest will free this. */
- char **parent_p;
- if (VIR_ALLOC(parent_p) < 0) {
- virReportOOMError();
- goto cleanup;
- }
- if (!(*parent_p = strdup(parent))) {
- VIR_FREE(parent_p);
- virReportOOMError();
- goto cleanup;
- }
- ret->parent = parent_p;
- }
+ make_nonnull_storage_pool(&ret->pool, pool);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dev)
- virNodeDeviceFree(dev);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
-
static int
-remoteDispatchNodeDeviceNumOfCaps(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_node_device_num_of_caps_args *args,
- remote_node_device_num_of_caps_ret *ret)
+remoteDispatchStoragePoolLookupByVolume(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_lookup_by_volume_args *args,
+ remote_storage_pool_lookup_by_volume_ret *ret)
{
- virNodeDevicePtr dev = NULL;
+ virStoragePoolPtr pool = NULL;
+ virStorageVolPtr vol = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ if (!(vol = get_nonnull_storage_vol(conn, args->vol)))
goto cleanup;
- if ((ret->num = virNodeDeviceNumOfCaps(dev)) < 0)
+ if (!(pool = virStoragePoolLookupByVolume(vol)))
goto cleanup;
+ make_nonnull_storage_pool(&ret->pool, pool);
+
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dev)
- virNodeDeviceFree(dev);
+ if (vol)
+ virStorageVolFree(vol);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
-
static int
-remoteDispatchNodeDeviceListCaps(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_node_device_list_caps_args *args,
- remote_node_device_list_caps_ret *ret)
+remoteDispatchStoragePoolListVolumes(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_list_volumes_args *args,
+ remote_storage_pool_list_volumes_ret *ret)
{
- virNodeDevicePtr dev = NULL;
+ virStoragePoolPtr pool = NULL;
int rv = -1;
int len;
goto cleanup;
}
- if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
- goto cleanup;
-
- if (args->maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) {
+ if (args->maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX) {
virNetError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX"));
+ "%s", _("maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX"));
goto cleanup;
}
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
+ goto cleanup;
+
/* Allocate return buffer. */
if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
virReportOOMError();
goto cleanup;
}
- len = virNodeDeviceListCaps(dev, ret->names.names_val,
- args->maxnames);
+ len = virStoragePoolListVolumes(pool,
+ ret->names.names_val, args->maxnames);
if (len < 0)
goto cleanup;
ret->names.names_len = len;
remoteDispatchError(rerr);
VIR_FREE(ret->names.names_val);
}
- if (dev)
- virNodeDeviceFree(dev);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
+
+/***************************************************************
+ * STORAGE VOL APIS
+ ***************************************************************/
+
+
+
static int
-remoteDispatchNodeDeviceCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED,
+remoteDispatchStorageVolCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_node_device_create_xml_args *args,
- remote_node_device_create_xml_ret *ret)
+ remote_storage_vol_create_xml_args *args,
+ remote_storage_vol_create_xml_ret *ret)
{
- virNodeDevicePtr dev = NULL;
+ virStoragePoolPtr pool = NULL;
+ virStorageVolPtr vol = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dev = virNodeDeviceCreateXML(conn, args->xml_desc, args->flags)))
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- make_nonnull_node_device(&ret->dev, dev);
+ if (!(vol = virStorageVolCreateXML(pool, args->xml, args->flags)))
+ goto cleanup;
+ make_nonnull_storage_vol(&ret->vol, vol);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dev)
- virNodeDeviceFree(dev);
+ if (pool)
+ virStoragePoolFree(pool);
+ if (vol)
+ virStorageVolFree(vol);
return rv;
}
-static int remoteDispatchStorageVolUpload(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client,
- virConnectPtr conn,
- remote_message_header *hdr,
- remote_error *rerr,
- remote_storage_vol_upload_args *args,
- void *ret ATTRIBUTE_UNUSED)
+static int
+remoteDispatchStorageVolCreateXMLFrom(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_create_xml_from_args *args,
+ remote_storage_vol_create_xml_from_ret *ret)
{
- struct qemud_client_stream *stream = NULL;
- virStorageVolPtr vol = NULL;
+ virStoragePoolPtr pool = NULL;
+ virStorageVolPtr clonevol = NULL;
+ virStorageVolPtr newvol = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(vol = get_nonnull_storage_vol(conn, args->vol)))
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (!(stream = remoteCreateClientStream(conn, hdr)))
+ if (!(clonevol = get_nonnull_storage_vol(conn, args->clonevol)))
goto cleanup;
- if (virStorageVolUpload(vol, stream->st,
- args->offset, args->length,
- args->flags) < 0)
+ if (!(newvol = virStorageVolCreateXMLFrom(pool, args->xml, clonevol,
+ args->flags)))
goto cleanup;
- if (remoteAddClientStream(client, stream, 0) < 0)
+ make_nonnull_storage_vol(&ret->vol, newvol);
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (newvol)
+ virStorageVolFree(newvol);
+ if (clonevol)
+ virStorageVolFree(clonevol);
+ if (pool)
+ virStoragePoolFree(pool);
+ return rv;
+}
+
+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;
remoteDispatchError(rerr);
if (vol)
virStorageVolFree(vol);
- if (stream && rv != 0) {
- virStreamAbort(stream->st);
- remoteFreeClientStream(client, stream);
- }
return rv;
}
-static int remoteDispatchStorageVolDownload(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client,
- virConnectPtr conn,
- remote_message_header *hdr,
- remote_error *rerr,
- remote_storage_vol_download_args *args,
- void *ret ATTRIBUTE_UNUSED)
+static int
+remoteDispatchStorageVolLookupByName(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_lookup_by_name_args *args,
+ remote_storage_vol_lookup_by_name_ret *ret)
{
- struct qemud_client_stream *stream = NULL;
+ virStoragePoolPtr pool = NULL;
virStorageVolPtr vol = NULL;
int rv = -1;
goto cleanup;
}
- if (!(vol = get_nonnull_storage_vol(conn, args->vol)))
- goto cleanup;
-
- if (!(stream = remoteCreateClientStream(conn, hdr)))
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virStorageVolDownload(vol, stream->st,
- args->offset, args->length,
- args->flags) < 0)
+ if (!(vol = virStorageVolLookupByName(pool, args->name)))
goto cleanup;
- if (remoteAddClientStream(client, stream, 1) < 0)
- goto cleanup;
+ make_nonnull_storage_vol(&ret->vol, vol);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
+ if (pool)
+ virStoragePoolFree(pool);
if (vol)
virStorageVolFree(vol);
- if (stream && rv != 0) {
- virStreamAbort(stream->st);
- remoteFreeClientStream(client, stream);
- }
return rv;
}
-
-/***************************
- * Register / deregister events
- ***************************/
static int
-remoteDispatchDomainEventsRegister(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr ATTRIBUTE_UNUSED,
- void *args ATTRIBUTE_UNUSED,
- remote_domain_events_register_ret *ret ATTRIBUTE_UNUSED)
+remoteDispatchStorageVolLookupByKey(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_lookup_by_key_args *args,
+ remote_storage_vol_lookup_by_key_ret *ret)
{
- int callbackID;
+ virStorageVolPtr vol = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE] != -1) {
- virNetError(VIR_ERR_INTERNAL_ERROR, _("domain event %d already registered"), VIR_DOMAIN_EVENT_ID_LIFECYCLE);
- goto cleanup;
- }
-
- if ((callbackID = virConnectDomainEventRegisterAny(conn,
- NULL,
- VIR_DOMAIN_EVENT_ID_LIFECYCLE,
- VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventLifecycle),
- client, NULL)) < 0)
+ if (!(vol = virStorageVolLookupByKey(conn, args->key)))
goto cleanup;
- client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE] = callbackID;
+ make_nonnull_storage_vol(&ret->vol, vol);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
+ if (vol)
+ virStorageVolFree(vol);
return rv;
}
+
static int
-remoteDispatchDomainEventsDeregister(struct qemud_server *server ATTRIBUTE_UNUSED,
+remoteDispatchStorageVolLookupByPath(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr ATTRIBUTE_UNUSED,
- void *args ATTRIBUTE_UNUSED,
- remote_domain_events_deregister_ret *ret ATTRIBUTE_UNUSED)
+ remote_error *rerr,
+ remote_storage_vol_lookup_by_path_args *args,
+ remote_storage_vol_lookup_by_path_ret *ret)
{
+ virStorageVolPtr vol = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE] < 0) {
- virNetError(VIR_ERR_INTERNAL_ERROR, _("domain event %d not registered"), VIR_DOMAIN_EVENT_ID_LIFECYCLE);
+ if (!(vol = virStorageVolLookupByPath(conn, args->path)))
goto cleanup;
- }
- if (virConnectDomainEventDeregisterAny(conn,
- client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE]) < 0)
- goto cleanup;
+ make_nonnull_storage_vol(&ret->vol, vol);
- client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE] = -1;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
+ if (vol)
+ virStorageVolFree(vol);
return rv;
}
-static void
-remoteDispatchDomainEventSend(struct qemud_client *client,
- int procnr,
- xdrproc_t proc,
- void *data)
-{
- struct qemud_client_message *msg = NULL;
- XDR xdr;
- unsigned int len;
-
- if (VIR_ALLOC(msg) < 0)
- return;
-
- msg->hdr.prog = REMOTE_PROGRAM;
- msg->hdr.vers = REMOTE_PROTOCOL_VERSION;
- msg->hdr.proc = procnr;
- msg->hdr.type = REMOTE_MESSAGE;
- msg->hdr.serial = 1;
- msg->hdr.status = REMOTE_OK;
-
- if (remoteEncodeClientMessageHeader(msg) < 0)
- goto cleanup;
-
- /* Serialise the return header and event. */
- xdrmem_create(&xdr,
- msg->buffer,
- msg->bufferLength,
- XDR_ENCODE);
-
- /* Skip over the header we just wrote */
- if (xdr_setpos(&xdr, msg->bufferOffset) == 0)
- goto xdr_cleanup;
-
- if (!(proc)(&xdr, data)) {
- VIR_WARN("Failed to serialize domain event %d", procnr);
- goto xdr_cleanup;
- }
-
- /* Update length word to include payload*/
- len = msg->bufferOffset = xdr_getpos(&xdr);
- if (xdr_setpos(&xdr, 0) == 0)
- goto xdr_cleanup;
-
- if (!xdr_u_int(&xdr, &len))
- goto xdr_cleanup;
-
- /* Send it. */
- msg->async = 1;
- msg->bufferLength = len;
- msg->bufferOffset = 0;
-
- VIR_DEBUG("Queue event %d %d", procnr, msg->bufferLength);
- qemudClientMessageQueuePush(&client->tx, msg);
- qemudUpdateClientEvent(client);
-
- xdr_destroy(&xdr);
- return;
-xdr_cleanup:
- xdr_destroy(&xdr);
-cleanup:
- VIR_FREE(msg);
-}
+/***************************************************************
+ * NODE INFO APIS
+ **************************************************************/
static int
-remoteDispatchNumOfSecrets(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_num_of_secrets_ret *ret)
+remoteDispatchNodeNumOfDevices(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_num_of_devices_args *args,
+ remote_node_num_of_devices_ret *ret)
{
int rv = -1;
goto cleanup;
}
- if ((ret->num = virConnectNumOfSecrets(conn)) < 0)
+ if ((ret->num = virNodeNumOfDevices(conn,
+ args->cap ? *args->cap : NULL,
+ args->flags)) < 0)
goto cleanup;
rv = 0;
return rv;
}
+
static int
-remoteDispatchListSecrets(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_list_secrets_args *args,
- remote_list_secrets_ret *ret)
+remoteDispatchNodeListDevices(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_list_devices_args *args,
+ remote_node_list_devices_ret *ret)
{
int rv = -1;
int len;
goto cleanup;
}
- if (args->maxuuids > REMOTE_SECRET_UUID_LIST_MAX) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("maxuuids > REMOTE_SECRET_UUID_LIST_MAX"));
+ if (args->maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR,
+ "%s", _("maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX"));
goto cleanup;
}
- if (VIR_ALLOC_N(ret->uuids.uuids_val, args->maxuuids) < 0) {
+ /* Allocate return buffer. */
+ if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
virReportOOMError();
goto cleanup;
}
- len = virConnectListSecrets(conn, ret->uuids.uuids_val,
- args->maxuuids);
+ len = virNodeListDevices(conn,
+ args->cap ? *args->cap : NULL,
+ ret->names.names_val, args->maxnames, args->flags);
if (len < 0)
goto cleanup;
- ret->uuids.uuids_len = len;
+ ret->names.names_len = len;
rv = 0;
cleanup:
if (rv < 0) {
remoteDispatchError(rerr);
- VIR_FREE(ret->uuids.uuids_val);
+ VIR_FREE(ret->names.names_val);
}
return rv;
}
-static int
-remoteDispatchSecretDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_secret_define_xml_args *args,
- remote_secret_define_xml_ret *ret)
-{
- virSecretPtr secret = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(secret = virSecretDefineXML(conn, args->xml, args->flags)))
- goto cleanup;
-
- make_nonnull_secret(&ret->secret, secret);
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (secret)
- virSecretFree(secret);
- return rv;
-}
static int
-remoteDispatchSecretGetValue(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_secret_get_value_args *args,
- remote_secret_get_value_ret *ret)
+remoteDispatchNodeDeviceLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_device_lookup_by_name_args *args,
+ remote_node_device_lookup_by_name_ret *ret)
{
- virSecretPtr secret = NULL;
- size_t value_size;
- unsigned char *value;
+ virNodeDevicePtr dev = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(secret = get_nonnull_secret(conn, args->secret)))
- goto cleanup;
-
- if (!(value = virSecretGetValue(secret, &value_size, args->flags)))
+ if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
goto cleanup;
- ret->value.value_len = value_size;
- ret->value.value_val = (char *)value;
+ make_nonnull_node_device(&ret->dev, dev);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (secret)
- virSecretFree(secret);
+ if (dev)
+ virNodeDeviceFree(dev);
return rv;
}
static int
-remoteDispatchSecretGetXMLDesc(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_secret_get_xml_desc_args *args,
- remote_secret_get_xml_desc_ret *ret)
+remoteDispatchNodeDeviceGetParent(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_device_get_parent_args *args,
+ remote_node_device_get_parent_ret *ret)
{
- virSecretPtr secret = NULL;
+ virNodeDevicePtr dev = NULL;
+ const char *parent = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(secret = get_nonnull_secret(conn, args->secret)))
- goto cleanup;
- if (!(ret->xml = virSecretGetXMLDesc(secret, args->flags)))
+ if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
goto cleanup;
+ parent = virNodeDeviceGetParent(dev);
+
+ if (parent == NULL) {
+ ret->parent = NULL;
+ } else {
+ /* remoteDispatchClientRequest will free this. */
+ char **parent_p;
+ if (VIR_ALLOC(parent_p) < 0) {
+ virReportOOMError();
+ goto cleanup;
+ }
+ if (!(*parent_p = strdup(parent))) {
+ VIR_FREE(parent_p);
+ virReportOOMError();
+ goto cleanup;
+ }
+ ret->parent = parent_p;
+ }
+
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (secret)
- virSecretFree(secret);
+ if (dev)
+ virNodeDeviceFree(dev);
return rv;
}
static int
-remoteDispatchSecretLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED,
+remoteDispatchNodeDeviceListCaps(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_secret_lookup_by_uuid_args *args,
- remote_secret_lookup_by_uuid_ret *ret)
+ remote_node_device_list_caps_args *args,
+ remote_node_device_list_caps_ret *ret)
{
- virSecretPtr secret = NULL;
+ virNodeDevicePtr dev = NULL;
int rv = -1;
+ int len;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(secret = virSecretLookupByUUID(conn, (unsigned char *)args->uuid)))
+ if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
goto cleanup;
- make_nonnull_secret(&ret->secret, secret);
+ if (args->maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR,
+ "%s", _("maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX"));
+ goto cleanup;
+ }
+
+ /* Allocate return buffer. */
+ if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
+ virReportOOMError();
+ goto cleanup;
+ }
+
+ len = virNodeDeviceListCaps(dev, ret->names.names_val,
+ args->maxnames);
+ if (len < 0)
+ goto cleanup;
+ ret->names.names_len = len;
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (secret)
- virSecretFree(secret);
+ VIR_FREE(ret->names.names_val);
+ }
+ if (dev)
+ virNodeDeviceFree(dev);
return rv;
}
static int
-remoteDispatchSecretLookupByUsage(struct qemud_server *server ATTRIBUTE_UNUSED,
+remoteDispatchNodeDeviceCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_secret_lookup_by_usage_args *args,
- remote_secret_lookup_by_usage_ret *ret)
+ remote_node_device_create_xml_args *args,
+ remote_node_device_create_xml_ret *ret)
{
- virSecretPtr secret = NULL;
+ virNodeDevicePtr dev = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(secret = virSecretLookupByUsage(conn, args->usageType, args->usageID)))
+ if (!(dev = virNodeDeviceCreateXML(conn, args->xml_desc, args->flags)))
goto cleanup;
- make_nonnull_secret(&ret->secret, secret);
+ make_nonnull_node_device(&ret->dev, dev);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (secret)
- virSecretFree(secret);
+ if (dev)
+ virNodeDeviceFree(dev);
return rv;
}
-
-static int remoteDispatchDomainIsActive(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_is_active_args *args,
- remote_domain_is_active_ret *ret)
+static int remoteDispatchStorageVolUpload(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client,
+ virConnectPtr conn,
+ remote_message_header *hdr,
+ remote_error *rerr,
+ remote_storage_vol_upload_args *args,
+ void *ret ATTRIBUTE_UNUSED)
{
- virDomainPtr dom = NULL;
+ struct qemud_client_stream *stream = NULL;
+ virStorageVolPtr vol = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
+ if (!(vol = get_nonnull_storage_vol(conn, args->vol)))
+ goto cleanup;
+
+ if (!(stream = remoteCreateClientStream(conn, hdr)))
goto cleanup;
- if ((ret->active = virDomainIsActive(dom)) < 0)
+ if (virStorageVolUpload(vol, stream->st,
+ args->offset, args->length,
+ args->flags) < 0)
+ goto cleanup;
+
+ if (remoteAddClientStream(client, stream, 0) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
+ if (vol)
+ virStorageVolFree(vol);
+ if (stream && rv != 0) {
+ virStreamAbort(stream->st);
+ remoteFreeClientStream(client, stream);
+ }
return rv;
}
-static int remoteDispatchDomainIsPersistent(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
+static int remoteDispatchStorageVolDownload(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client,
virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_message_header *hdr,
remote_error *rerr,
- remote_domain_is_persistent_args *args,
- remote_domain_is_persistent_ret *ret)
+ remote_storage_vol_download_args *args,
+ void *ret ATTRIBUTE_UNUSED)
{
- virDomainPtr dom = NULL;
+ struct qemud_client_stream *stream = NULL;
+ virStorageVolPtr vol = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
+ if (!(vol = get_nonnull_storage_vol(conn, args->vol)))
goto cleanup;
- if ((ret->persistent = virDomainIsPersistent(dom)) < 0)
+ if (!(stream = remoteCreateClientStream(conn, hdr)))
+ goto cleanup;
+
+ if (virStorageVolDownload(vol, stream->st,
+ args->offset, args->length,
+ args->flags) < 0)
+ goto cleanup;
+
+ if (remoteAddClientStream(client, stream, 1) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
+ if (vol)
+ virStorageVolFree(vol);
+ if (stream && rv != 0) {
+ virStreamAbort(stream->st);
+ remoteFreeClientStream(client, stream);
+ }
return rv;
}
-static int remoteDispatchDomainIsUpdated(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_is_updated_args *args,
- remote_domain_is_updated_ret *ret)
+
+/***************************
+ * Register / deregister events
+ ***************************/
+static int
+remoteDispatchDomainEventsRegister(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr ATTRIBUTE_UNUSED,
+ void *args ATTRIBUTE_UNUSED,
+ remote_domain_events_register_ret *ret ATTRIBUTE_UNUSED)
{
- virDomainPtr dom = NULL;
+ int callbackID;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
+ if (client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE] != -1) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, _("domain event %d already registered"), VIR_DOMAIN_EVENT_ID_LIFECYCLE);
goto cleanup;
+ }
- if ((ret->updated = virDomainIsUpdated(dom)) < 0)
+ if ((callbackID = virConnectDomainEventRegisterAny(conn,
+ NULL,
+ VIR_DOMAIN_EVENT_ID_LIFECYCLE,
+ VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventLifecycle),
+ client, NULL)) < 0)
goto cleanup;
+ client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE] = callbackID;
+
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
return rv;
}
-static int remoteDispatchInterfaceIsActive(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_interface_is_active_args *args,
- remote_interface_is_active_ret *ret)
+static int
+remoteDispatchDomainEventsDeregister(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr ATTRIBUTE_UNUSED,
+ void *args ATTRIBUTE_UNUSED,
+ remote_domain_events_deregister_ret *ret ATTRIBUTE_UNUSED)
{
- virInterfacePtr iface = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(iface = get_nonnull_interface(conn, args->iface)))
+ if (client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE] < 0) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, _("domain event %d not registered"), VIR_DOMAIN_EVENT_ID_LIFECYCLE);
goto cleanup;
+ }
- if ((ret->active = virInterfaceIsActive(iface)) < 0)
+ if (virConnectDomainEventDeregisterAny(conn,
+ client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE]) < 0)
goto cleanup;
+ client->domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LIFECYCLE] = -1;
rv = 0;
cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (iface)
- virInterfaceFree(iface);
- return rv;
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static void
+remoteDispatchDomainEventSend(struct qemud_client *client,
+ int procnr,
+ xdrproc_t proc,
+ void *data)
+{
+ struct qemud_client_message *msg = NULL;
+ XDR xdr;
+ unsigned int len;
+
+ if (VIR_ALLOC(msg) < 0)
+ return;
+
+ msg->hdr.prog = REMOTE_PROGRAM;
+ msg->hdr.vers = REMOTE_PROTOCOL_VERSION;
+ msg->hdr.proc = procnr;
+ msg->hdr.type = REMOTE_MESSAGE;
+ msg->hdr.serial = 1;
+ msg->hdr.status = REMOTE_OK;
+
+ if (remoteEncodeClientMessageHeader(msg) < 0)
+ goto cleanup;
+
+ /* Serialise the return header and event. */
+ xdrmem_create(&xdr,
+ msg->buffer,
+ msg->bufferLength,
+ XDR_ENCODE);
+
+ /* Skip over the header we just wrote */
+ if (xdr_setpos(&xdr, msg->bufferOffset) == 0)
+ goto xdr_cleanup;
+
+ if (!(proc)(&xdr, data)) {
+ VIR_WARN("Failed to serialize domain event %d", procnr);
+ goto xdr_cleanup;
+ }
+
+ /* Update length word to include payload*/
+ len = msg->bufferOffset = xdr_getpos(&xdr);
+ if (xdr_setpos(&xdr, 0) == 0)
+ goto xdr_cleanup;
+
+ if (!xdr_u_int(&xdr, &len))
+ goto xdr_cleanup;
+
+ /* Send it. */
+ msg->async = 1;
+ msg->bufferLength = len;
+ msg->bufferOffset = 0;
+
+ VIR_DEBUG("Queue event %d %d", procnr, msg->bufferLength);
+ qemudClientMessageQueuePush(&client->tx, msg);
+ qemudUpdateClientEvent(client);
+
+ xdr_destroy(&xdr);
+ return;
+
+xdr_cleanup:
+ xdr_destroy(&xdr);
+cleanup:
+ VIR_FREE(msg);
}
-static int remoteDispatchNetworkIsActive(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_network_is_active_args *args,
- remote_network_is_active_ret *ret)
+static int
+remoteDispatchListSecrets(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_list_secrets_args *args,
+ remote_list_secrets_ret *ret)
{
- virNetworkPtr net = NULL;
int rv = -1;
+ int len;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(net = get_nonnull_network(conn, args->net)))
+ if (args->maxuuids > REMOTE_SECRET_UUID_LIST_MAX) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("maxuuids > REMOTE_SECRET_UUID_LIST_MAX"));
+ goto cleanup;
+ }
+
+ if (VIR_ALLOC_N(ret->uuids.uuids_val, args->maxuuids) < 0) {
+ virReportOOMError();
goto cleanup;
+ }
- if ((ret->active = virNetworkIsActive(net)) < 0)
+ len = virConnectListSecrets(conn, ret->uuids.uuids_val,
+ args->maxuuids);
+ if (len < 0)
goto cleanup;
+ ret->uuids.uuids_len = len;
rv = 0;
cleanup:
- if (rv < 0)
+ if (rv < 0) {
remoteDispatchError(rerr);
- if (net)
- virNetworkFree(net);
+ VIR_FREE(ret->uuids.uuids_val);
+ }
return rv;
}
-static int remoteDispatchNetworkIsPersistent(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_network_is_persistent_args *args,
- remote_network_is_persistent_ret *ret)
+static int
+remoteDispatchSecretDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_secret_define_xml_args *args,
+ remote_secret_define_xml_ret *ret)
{
- virNetworkPtr net = NULL;
+ virSecretPtr secret = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(net = get_nonnull_network(conn, args->net)))
- goto cleanup;
-
- if ((ret->persistent = virNetworkIsPersistent(net)) < 0)
+ if (!(secret = virSecretDefineXML(conn, args->xml, args->flags)))
goto cleanup;
+ make_nonnull_secret(&ret->secret, secret);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (net)
- virNetworkFree(net);
+ if (secret)
+ virSecretFree(secret);
return rv;
}
-static int remoteDispatchStoragePoolIsActive(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_is_active_args *args,
- remote_storage_pool_is_active_ret *ret)
+static int
+remoteDispatchSecretGetValue(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_secret_get_value_args *args,
+ remote_secret_get_value_ret *ret)
{
- virStoragePoolPtr pool = NULL;
+ virSecretPtr secret = NULL;
+ size_t value_size;
+ unsigned char *value;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
+ if (!(secret = get_nonnull_secret(conn, args->secret)))
goto cleanup;
- if ((ret->active = virStoragePoolIsActive(pool)) < 0)
+ if (!(value = virSecretGetValue(secret, &value_size, args->flags)))
goto cleanup;
+ ret->value.value_len = value_size;
+ ret->value.value_val = (char *)value;
+
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
+ if (secret)
+ virSecretFree(secret);
return rv;
}
-static int remoteDispatchStoragePoolIsPersistent(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_is_persistent_args *args,
- remote_storage_pool_is_persistent_ret *ret)
+static int
+remoteDispatchSecretLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_secret_lookup_by_uuid_args *args,
+ remote_secret_lookup_by_uuid_ret *ret)
{
- virStoragePoolPtr pool = NULL;
+ virSecretPtr secret = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
+ if (!(secret = virSecretLookupByUUID(conn, (unsigned char *)args->uuid)))
goto cleanup;
- if ((ret->persistent = virStoragePoolIsPersistent(pool)) < 0)
- goto cleanup;
+ make_nonnull_secret(&ret->secret, secret);
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (pool)
- virStoragePoolFree(pool);
+ if (secret)
+ virSecretFree(secret);
return rv;
}
-
-static int remoteDispatchIsSecure(struct qemud_server *server ATTRIBUTE_UNUSED,
+static int
+remoteDispatchSecretLookupByUsage(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_is_secure_ret *ret)
+ remote_secret_lookup_by_usage_args *args,
+ remote_secret_lookup_by_usage_ret *ret)
{
+ virSecretPtr secret = NULL;
int rv = -1;
if (!conn) {
goto cleanup;
}
- if ((ret->secure = virConnectIsSecure(conn)) < 0)
+ if (!(secret = virSecretLookupByUsage(conn, args->usageType, args->usageID)))
goto cleanup;
+ make_nonnull_secret(&ret->secret, secret);
+
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
+ if (secret)
+ virSecretFree(secret);
return rv;
}
-
static int
remoteDispatchCpuCompare(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
return rv;
}
-static int
-remoteDispatchDomainSnapshotDumpXML(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_snapshot_dump_xml_args *args,
- remote_domain_snapshot_dump_xml_ret *ret)
-{
- virDomainPtr dom = NULL;
- virDomainSnapshotPtr snapshot = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(dom = get_nonnull_domain(conn, args->snap.dom)))
- goto cleanup;
-
- if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))
- goto cleanup;
-
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->xml = virDomainSnapshotGetXMLDesc(snapshot, args->flags)))
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (snapshot)
- virDomainSnapshotFree(snapshot);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
-static int
-remoteDispatchDomainSnapshotNum(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_snapshot_num_args *args,
- remote_domain_snapshot_num_ret *ret)
-{
- virDomainPtr dom = NULL;
- 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 ((ret->num = virDomainSnapshotNum(dom, args->flags)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
static int
remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
return rv;
}
-static int
-remoteDispatchDomainHasCurrentSnapshot(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_has_current_snapshot_args *args,
- remote_domain_has_current_snapshot_ret *ret)
-{
- virDomainPtr dom = NULL;
- int result;
- 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;
-
- result = virDomainHasCurrentSnapshot(dom, args->flags);
- if (result < 0)
- goto cleanup;
-
- ret->result = result;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (dom)
- virDomainFree(dom);
- return rv;
-}
-
static int
remoteDispatchDomainSnapshotCurrent(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
return rv;
}
-
-static int
-remoteDispatchNWFilterGetXMLDesc(struct qemud_server *server ATTRIBUTE_UNUSED,
- struct qemud_client *client ATTRIBUTE_UNUSED,
- virConnectPtr conn,
- remote_message_header *hdr ATTRIBUTE_UNUSED,
- remote_error *rerr,
- remote_nwfilter_get_xml_desc_args *args,
- remote_nwfilter_get_xml_desc_ret *ret)
-{
- virNWFilterPtr nwfilter = NULL;
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter)))
- goto cleanup;
-
- /* remoteDispatchClientRequest will free this. */
- if (!(ret->xml = virNWFilterGetXMLDesc(nwfilter, args->flags)))
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- if (nwfilter)
- virNWFilterFree(nwfilter);
- return rv;
-}
-
-
-static int
-remoteDispatchNumOfNWFilters(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_num_of_nwfilters_ret *ret)
-{
- int rv = -1;
-
- if (!conn) {
- virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
- goto cleanup;
- }
-
- if ((ret->num = virConnectNumOfNWFilters(conn)) < 0)
- goto cleanup;
-
- rv = 0;
-
-cleanup:
- if (rv < 0)
- remoteDispatchError(rerr);
- return rv;
-}
-
-
static int
remoteDispatchDomainGetBlockInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
return rv;
}
-/* remoteDispatchDomainDumpXML has to be implemented manually */
-
-/* remoteDispatchDomainEventsDeregister has to be implemented manually */
-
-/* remoteDispatchDomainEventsDeregisterAny has to be implemented manually */
-
-/* remoteDispatchDomainEventsRegister has to be implemented manually */
-
-/* remoteDispatchDomainEventsRegisterAny has to be implemented manually */
-
-/* remoteDispatchDomainGetAutostart has to be implemented manually */
-
-/* remoteDispatchDomainGetBlkioParameters has to be implemented manually */
-
-/* remoteDispatchDomainGetBlockInfo has to be implemented manually */
-
-/* remoteDispatchDomainGetInfo has to be implemented manually */
-
-/* remoteDispatchDomainGetJobInfo has to be implemented manually */
-
-/* remoteDispatchDomainGetMaxMemory has to be implemented manually */
-
-/* remoteDispatchDomainGetMaxVcpus has to be implemented manually */
-
-/* remoteDispatchDomainGetMemoryParameters has to be implemented manually */
-
-/* remoteDispatchDomainGetOsType has to be implemented manually */
-
-/* remoteDispatchDomainGetSchedulerParameters has to be implemented manually */
-
-/* remoteDispatchDomainGetSchedulerType has to be implemented manually */
-
-/* remoteDispatchDomainGetSecurityLabel has to be implemented manually */
-
-/* remoteDispatchDomainGetVcpus has to be implemented manually */
-
-/* remoteDispatchDomainGetVcpusFlags has to be implemented manually */
-
-/* remoteDispatchDomainHasCurrentSnapshot has to be implemented manually */
-
-/* remoteDispatchDomainHasManagedSaveImage has to be implemented manually */
-
-/* remoteDispatchDomainInterfaceStats has to be implemented manually */
-
-/* remoteDispatchDomainIsActive has to be implemented manually */
-
-/* remoteDispatchDomainIsPersistent has to be implemented manually */
-
-/* remoteDispatchDomainIsUpdated has to be implemented manually */
-
-/* remoteDispatchDomainLookupById has to be implemented manually */
-
-/* remoteDispatchDomainLookupByName has to be implemented manually */
-
-/* remoteDispatchDomainLookupByUUID has to be implemented manually */
-
static int
-remoteDispatchDomainManagedSave(
+remoteDispatchDomainDumpXML(
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_managed_save_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_dump_xml_args *args,
+ remote_domain_dump_xml_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
+ char *xml;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainManagedSave(dom, args->flags) < 0)
+ if ((xml = virDomainGetXMLDesc(dom, args->flags)) == NULL)
goto cleanup;
+ ret->xml = xml;
rv = 0;
cleanup:
return rv;
}
+/* remoteDispatchDomainEventsDeregister has to be implemented manually */
+
+/* remoteDispatchDomainEventsDeregisterAny has to be implemented manually */
+
+/* remoteDispatchDomainEventsRegister has to be implemented manually */
+
+/* remoteDispatchDomainEventsRegisterAny has to be implemented manually */
+
static int
-remoteDispatchDomainManagedSaveRemove(
+remoteDispatchDomainGetAutostart(
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_managed_save_remove_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_get_autostart_args *args,
+ remote_domain_get_autostart_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
+ int autostart;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainManagedSaveRemove(dom, args->flags) < 0)
+ if (virDomainGetAutostart(dom, &autostart) < 0)
goto cleanup;
+ ret->autostart = autostart;
rv = 0;
cleanup:
return rv;
}
-/* remoteDispatchDomainMemoryPeek has to be implemented manually */
-
-/* remoteDispatchDomainMemoryStats has to be implemented manually */
-
-/* remoteDispatchDomainMigrateFinish has to be implemented manually */
-
-/* remoteDispatchDomainMigrateFinish2 has to be implemented manually */
-
-/* remoteDispatchDomainMigratePerform has to be implemented manually */
+/* remoteDispatchDomainGetBlkioParameters has to be implemented manually */
-/* remoteDispatchDomainMigratePrepare has to be implemented manually */
+/* remoteDispatchDomainGetBlockInfo has to be implemented manually */
-/* remoteDispatchDomainMigratePrepare2 has to be implemented manually */
+/* remoteDispatchDomainGetInfo has to be implemented manually */
-/* remoteDispatchDomainMigratePrepareTunnel has to be implemented manually */
+/* remoteDispatchDomainGetJobInfo has to be implemented manually */
static int
-remoteDispatchDomainMigrateSetMaxDowntime(
+remoteDispatchDomainGetMaxMemory(
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_migrate_set_max_downtime_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_get_max_memory_args *args,
+ remote_domain_get_max_memory_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
+ unsigned long memory;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainMigrateSetMaxDowntime(dom, args->downtime, args->flags) < 0)
+ if ((memory = virDomainGetMaxMemory(dom)) == 0)
goto cleanup;
+ ret->memory = memory;
rv = 0;
cleanup:
}
static int
-remoteDispatchDomainMigrateSetMaxSpeed(
+remoteDispatchDomainGetMaxVcpus(
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_migrate_set_max_speed_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_get_max_vcpus_args *args,
+ remote_domain_get_max_vcpus_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
+ int num;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainMigrateSetMaxSpeed(dom, args->bandwidth, args->flags) < 0)
+ if ((num = virDomainGetMaxVcpus(dom)) < 0)
goto cleanup;
+ ret->num = num;
rv = 0;
cleanup:
return rv;
}
-/* remoteDispatchDomainOpenConsole has to be implemented manually */
-
-/* remoteDispatchDomainPinVcpu has to be implemented manually */
+/* remoteDispatchDomainGetMemoryParameters has to be implemented manually */
static int
-remoteDispatchDomainReboot(
+remoteDispatchDomainGetOsType(
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_reboot_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_get_os_type_args *args,
+ remote_domain_get_os_type_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
+ char *type;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainReboot(dom, args->flags) < 0)
+ if ((type = virDomainGetOSType(dom)) == NULL)
goto cleanup;
+ ret->type = type;
rv = 0;
cleanup:
return rv;
}
+/* remoteDispatchDomainGetSchedulerParameters has to be implemented manually */
+
+/* remoteDispatchDomainGetSchedulerType has to be implemented manually */
+
+/* remoteDispatchDomainGetSecurityLabel has to be implemented manually */
+
+/* remoteDispatchDomainGetVcpus has to be implemented manually */
+
static int
-remoteDispatchDomainRestore(
+remoteDispatchDomainGetVcpusFlags(
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_restore_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_get_vcpus_flags_args *args,
+ remote_domain_get_vcpus_flags_ret *ret)
{
int rv = -1;
+ virDomainPtr dom = NULL;
+ int num;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
- if (virDomainRestore(conn, args->from) < 0)
+ if ((num = virDomainGetVcpusFlags(dom, args->flags)) < 0)
goto cleanup;
+ ret->num = num;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
-
+ if (dom)
+ virDomainFree(dom);
return rv;
}
static int
-remoteDispatchDomainResume(
+remoteDispatchDomainHasCurrentSnapshot(
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_resume_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_has_current_snapshot_args *args,
+ remote_domain_has_current_snapshot_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
+ int result;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainResume(dom) < 0)
+ if ((result = virDomainHasCurrentSnapshot(dom, args->flags)) < 0)
goto cleanup;
+ ret->result = result;
rv = 0;
cleanup:
}
static int
-remoteDispatchDomainRevertToSnapshot(
+remoteDispatchDomainHasManagedSaveImage(
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_revert_to_snapshot_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_has_managed_save_image_args *args,
+ remote_domain_has_managed_save_image_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
- virDomainSnapshotPtr snapshot = NULL;
+ int result;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->snap.dom)))
- goto cleanup;
-
- if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainRevertToSnapshot(snapshot, args->flags) < 0)
+ if ((result = virDomainHasManagedSaveImage(dom, args->flags)) < 0)
goto cleanup;
+ ret->result = result;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (snapshot)
- virDomainSnapshotFree(snapshot);
if (dom)
virDomainFree(dom);
return rv;
}
+/* remoteDispatchDomainInterfaceStats has to be implemented manually */
+
static int
-remoteDispatchDomainSave(
+remoteDispatchDomainIsActive(
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_save_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_is_active_args *args,
+ remote_domain_is_active_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
+ int active;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainSave(dom, args->to) < 0)
+ if ((active = virDomainIsActive(dom)) < 0)
goto cleanup;
+ ret->active = active;
rv = 0;
cleanup:
}
static int
-remoteDispatchDomainSetAutostart(
+remoteDispatchDomainIsPersistent(
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_set_autostart_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_is_persistent_args *args,
+ remote_domain_is_persistent_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
+ int persistent;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainSetAutostart(dom, args->autostart) < 0)
+ if ((persistent = virDomainIsPersistent(dom)) < 0)
goto cleanup;
+ ret->persistent = persistent;
rv = 0;
cleanup:
return rv;
}
-/* remoteDispatchDomainSetBlkioParameters has to be implemented manually */
-
static int
-remoteDispatchDomainSetMaxMemory(
+remoteDispatchDomainIsUpdated(
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_set_max_memory_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_is_updated_args *args,
+ remote_domain_is_updated_ret *ret)
{
int rv = -1;
virDomainPtr dom = NULL;
+ int updated;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainSetMaxMemory(dom, args->memory) < 0)
+ if ((updated = virDomainIsUpdated(dom)) < 0)
goto cleanup;
+ ret->updated = updated;
rv = 0;
cleanup:
return rv;
}
+/* remoteDispatchDomainLookupById has to be implemented manually */
+
+/* remoteDispatchDomainLookupByName has to be implemented manually */
+
+/* remoteDispatchDomainLookupByUUID has to be implemented manually */
+
static int
-remoteDispatchDomainSetMemory(
+remoteDispatchDomainManagedSave(
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_set_memory_args *args,
+ remote_domain_managed_save_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainSetMemory(dom, args->memory) < 0)
+ if (virDomainManagedSave(dom, args->flags) < 0)
goto cleanup;
rv = 0;
}
static int
-remoteDispatchDomainSetMemoryFlags(
+remoteDispatchDomainManagedSaveRemove(
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_set_memory_flags_args *args,
+ remote_domain_managed_save_remove_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainSetMemoryFlags(dom, args->memory, args->flags) < 0)
+ if (virDomainManagedSaveRemove(dom, args->flags) < 0)
goto cleanup;
rv = 0;
return rv;
}
-/* remoteDispatchDomainSetMemoryParameters has to be implemented manually */
+/* remoteDispatchDomainMemoryPeek has to be implemented manually */
-/* remoteDispatchDomainSetSchedulerParameters has to be implemented manually */
+/* remoteDispatchDomainMemoryStats has to be implemented manually */
+
+/* remoteDispatchDomainMigrateFinish has to be implemented manually */
+
+/* remoteDispatchDomainMigrateFinish2 has to be implemented manually */
+
+/* remoteDispatchDomainMigratePerform has to be implemented manually */
+
+/* remoteDispatchDomainMigratePrepare has to be implemented manually */
+
+/* remoteDispatchDomainMigratePrepare2 has to be implemented manually */
+
+/* remoteDispatchDomainMigratePrepareTunnel has to be implemented manually */
static int
-remoteDispatchDomainSetVcpus(
+remoteDispatchDomainMigrateSetMaxDowntime(
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_set_vcpus_args *args,
+ remote_domain_migrate_set_max_downtime_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainSetVcpus(dom, args->nvcpus) < 0)
+ if (virDomainMigrateSetMaxDowntime(dom, args->downtime, args->flags) < 0)
goto cleanup;
rv = 0;
}
static int
-remoteDispatchDomainSetVcpusFlags(
+remoteDispatchDomainMigrateSetMaxSpeed(
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_set_vcpus_flags_args *args,
+ remote_domain_migrate_set_max_speed_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainSetVcpusFlags(dom, args->nvcpus, args->flags) < 0)
+ if (virDomainMigrateSetMaxSpeed(dom, args->bandwidth, args->flags) < 0)
goto cleanup;
rv = 0;
return rv;
}
+/* remoteDispatchDomainOpenConsole has to be implemented manually */
+
+/* remoteDispatchDomainPinVcpu has to be implemented manually */
+
static int
-remoteDispatchDomainShutdown(
+remoteDispatchDomainReboot(
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_shutdown_args *args,
+ remote_domain_reboot_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainShutdown(dom) < 0)
+ if (virDomainReboot(dom, args->flags) < 0)
goto cleanup;
rv = 0;
return rv;
}
-/* remoteDispatchDomainSnapshotCreateXML has to be implemented manually */
-
-/* remoteDispatchDomainSnapshotCurrent has to be implemented manually */
-
static int
-remoteDispatchDomainSnapshotDelete(
+remoteDispatchDomainRestore(
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_snapshot_delete_args *args,
+ remote_domain_restore_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virDomainPtr dom = NULL;
- virDomainSnapshotPtr snapshot = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->snap.dom)))
- goto cleanup;
-
- if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))
- goto cleanup;
-
- if (virDomainSnapshotDelete(snapshot, args->flags) < 0)
+ if (virDomainRestore(conn, args->from) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (snapshot)
- virDomainSnapshotFree(snapshot);
- if (dom)
- virDomainFree(dom);
return rv;
}
-/* remoteDispatchDomainSnapshotDumpXML has to be implemented manually */
-
-/* remoteDispatchDomainSnapshotListNames has to be implemented manually */
-
-/* remoteDispatchDomainSnapshotLookupByName has to be implemented manually */
-
-/* remoteDispatchDomainSnapshotNum has to be implemented manually */
-
static int
-remoteDispatchDomainSuspend(
+remoteDispatchDomainResume(
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_suspend_args *args,
+ remote_domain_resume_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainSuspend(dom) < 0)
+ if (virDomainResume(dom) < 0)
goto cleanup;
rv = 0;
}
static int
-remoteDispatchDomainUndefine(
+remoteDispatchDomainRevertToSnapshot(
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_undefine_args *args,
+ remote_domain_revert_to_snapshot_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
virDomainPtr dom = NULL;
+ virDomainSnapshotPtr snapshot = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(dom = get_nonnull_domain(conn, args->dom)))
+ if (!(dom = get_nonnull_domain(conn, args->snap.dom)))
goto cleanup;
- if (virDomainUndefine(dom) < 0)
+ if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))
+ goto cleanup;
+
+ if (virDomainRevertToSnapshot(snapshot, args->flags) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
+ if (snapshot)
+ virDomainSnapshotFree(snapshot);
if (dom)
virDomainFree(dom);
return rv;
}
static int
-remoteDispatchDomainUpdateDeviceFlags(
+remoteDispatchDomainSave(
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_update_device_flags_args *args,
+ remote_domain_save_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virDomainUpdateDeviceFlags(dom, args->xml, args->flags) < 0)
+ if (virDomainSave(dom, args->to) < 0)
goto cleanup;
rv = 0;
return rv;
}
-/* remoteDispatchDomainXMLFromNative has to be implemented manually */
-
-/* remoteDispatchDomainXMLToNative has to be implemented manually */
-
-/* remoteDispatchFindStoragePoolSources has to be implemented manually */
-
-/* remoteDispatchGetCapabilities has to be implemented manually */
-
-/* remoteDispatchGetHostname has to be implemented manually */
+static int
+remoteDispatchDomainSetAutostart(
+ 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_set_autostart_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
-/* remoteDispatchGetLibVersion has to be implemented manually */
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
-/* remoteDispatchGetMaxVcpus has to be implemented manually */
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
-/* remoteDispatchGetSysinfo has to be implemented manually */
+ if (virDomainSetAutostart(dom, args->autostart) < 0)
+ goto cleanup;
-/* remoteDispatchGetType has to be implemented manually */
+ rv = 0;
-/* remoteDispatchGetURI has to be implemented manually */
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
-/* remoteDispatchGetVersion has to be implemented manually */
+/* remoteDispatchDomainSetBlkioParameters has to be implemented manually */
static int
-remoteDispatchInterfaceCreate(
+remoteDispatchDomainSetMaxMemory(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_interface_create_args *args,
+ remote_domain_set_max_memory_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virInterfacePtr iface = NULL;
+ virDomainPtr dom = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(iface = get_nonnull_interface(conn, args->iface)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virInterfaceCreate(iface, args->flags) < 0)
+ if (virDomainSetMaxMemory(dom, args->memory) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (iface)
- virInterfaceFree(iface);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
-/* remoteDispatchInterfaceDefineXML has to be implemented manually */
-
static int
-remoteDispatchInterfaceDestroy(
+remoteDispatchDomainSetMemory(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_interface_destroy_args *args,
+ remote_domain_set_memory_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virInterfacePtr iface = NULL;
+ virDomainPtr dom = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(iface = get_nonnull_interface(conn, args->iface)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virInterfaceDestroy(iface, args->flags) < 0)
+ if (virDomainSetMemory(dom, args->memory) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (iface)
- virInterfaceFree(iface);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
-/* remoteDispatchInterfaceGetXMLDesc has to be implemented manually */
-
-/* remoteDispatchInterfaceIsActive has to be implemented manually */
-
-/* remoteDispatchInterfaceLookupByMacString has to be implemented manually */
-
-/* remoteDispatchInterfaceLookupByName has to be implemented manually */
-
static int
-remoteDispatchInterfaceUndefine(
+remoteDispatchDomainSetMemoryFlags(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_interface_undefine_args *args,
+ remote_domain_set_memory_flags_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virInterfacePtr iface = NULL;
+ virDomainPtr dom = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(iface = get_nonnull_interface(conn, args->iface)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virInterfaceUndefine(iface) < 0)
+ if (virDomainSetMemoryFlags(dom, args->memory, args->flags) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (iface)
- virInterfaceFree(iface);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
-/* remoteDispatchIsSecure has to be implemented manually */
-
-/* remoteDispatchListDefinedDomains has to be implemented manually */
-
-/* remoteDispatchListDefinedInterfaces has to be implemented manually */
-
-/* remoteDispatchListDefinedNetworks has to be implemented manually */
+/* remoteDispatchDomainSetMemoryParameters has to be implemented manually */
-/* remoteDispatchListDefinedStoragePools has to be implemented manually */
+/* remoteDispatchDomainSetSchedulerParameters has to be implemented manually */
-/* remoteDispatchListDomains has to be implemented manually */
+static int
+remoteDispatchDomainSetVcpus(
+ 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_set_vcpus_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
-/* remoteDispatchListInterfaces has to be implemented manually */
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
-/* remoteDispatchListNetworks has to be implemented manually */
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
-/* remoteDispatchListNWFilters has to be implemented manually */
+ if (virDomainSetVcpus(dom, args->nvcpus) < 0)
+ goto cleanup;
-/* remoteDispatchListSecrets has to be implemented manually */
+ rv = 0;
-/* remoteDispatchListStoragePools has to be implemented manually */
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
static int
-remoteDispatchNetworkCreate(
+remoteDispatchDomainSetVcpusFlags(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_network_create_args *args,
+ remote_domain_set_vcpus_flags_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virNetworkPtr net = NULL;
+ virDomainPtr dom = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(net = get_nonnull_network(conn, args->net)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virNetworkCreate(net) < 0)
+ if (virDomainSetVcpusFlags(dom, args->nvcpus, args->flags) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (net)
- virNetworkFree(net);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
-/* remoteDispatchNetworkCreateXML has to be implemented manually */
-
-/* remoteDispatchNetworkDefineXML has to be implemented manually */
-
static int
-remoteDispatchNetworkDestroy(
+remoteDispatchDomainShutdown(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_network_destroy_args *args,
+ remote_domain_shutdown_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virNetworkPtr net = NULL;
+ virDomainPtr dom = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(net = get_nonnull_network(conn, args->net)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virNetworkDestroy(net) < 0)
+ if (virDomainShutdown(dom) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (net)
- virNetworkFree(net);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
-/* remoteDispatchNetworkDumpXML has to be implemented manually */
+/* remoteDispatchDomainSnapshotCreateXML has to be implemented manually */
+
+/* remoteDispatchDomainSnapshotCurrent has to be implemented manually */
+
+static int
+remoteDispatchDomainSnapshotDelete(
+ 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_snapshot_delete_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
+ virDomainSnapshotPtr snapshot = NULL;
-/* remoteDispatchNetworkGetAutostart has to be implemented manually */
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
-/* remoteDispatchNetworkGetBridgeName has to be implemented manually */
+ if (!(dom = get_nonnull_domain(conn, args->snap.dom)))
+ goto cleanup;
-/* remoteDispatchNetworkIsActive has to be implemented manually */
+ if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))
+ goto cleanup;
-/* remoteDispatchNetworkIsPersistent has to be implemented manually */
+ if (virDomainSnapshotDelete(snapshot, args->flags) < 0)
+ goto cleanup;
-/* remoteDispatchNetworkLookupByName has to be implemented manually */
+ rv = 0;
-/* remoteDispatchNetworkLookupByUUID has to be implemented manually */
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (snapshot)
+ virDomainSnapshotFree(snapshot);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
static int
-remoteDispatchNetworkSetAutostart(
+remoteDispatchDomainSnapshotDumpXML(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_network_set_autostart_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_snapshot_dump_xml_args *args,
+ remote_domain_snapshot_dump_xml_ret *ret)
{
int rv = -1;
- virNetworkPtr net = NULL;
+ virDomainPtr dom = NULL;
+ virDomainSnapshotPtr snapshot = NULL;
+ char *xml;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(net = get_nonnull_network(conn, args->net)))
+ if (!(dom = get_nonnull_domain(conn, args->snap.dom)))
goto cleanup;
- if (virNetworkSetAutostart(net, args->autostart) < 0)
+ if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))
+ goto cleanup;
+
+ if ((xml = virDomainSnapshotGetXMLDesc(snapshot, args->flags)) == NULL)
goto cleanup;
+ ret->xml = xml;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (net)
- virNetworkFree(net);
+ if (snapshot)
+ virDomainSnapshotFree(snapshot);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
+/* remoteDispatchDomainSnapshotListNames has to be implemented manually */
+
+/* remoteDispatchDomainSnapshotLookupByName has to be implemented manually */
+
static int
-remoteDispatchNetworkUndefine(
+remoteDispatchDomainSnapshotNum(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_network_undefine_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_domain_snapshot_num_args *args,
+ remote_domain_snapshot_num_ret *ret)
{
int rv = -1;
- virNetworkPtr net = NULL;
+ virDomainPtr dom = NULL;
+ int num;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(net = get_nonnull_network(conn, args->net)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virNetworkUndefine(net) < 0)
+ if ((num = virDomainSnapshotNum(dom, args->flags)) < 0)
goto cleanup;
+ ret->num = num;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (net)
- virNetworkFree(net);
+ if (dom)
+ virDomainFree(dom);
return rv;
}
-/* remoteDispatchNodeDeviceCreateXML has to be implemented manually */
-
static int
-remoteDispatchNodeDeviceDestroy(
+remoteDispatchDomainSuspend(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_node_device_destroy_args *args,
+ remote_domain_suspend_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virNodeDevicePtr dev = NULL;
+ virDomainPtr dom = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
goto cleanup;
- if (virNodeDeviceDestroy(dev) < 0)
+ if (virDomainSuspend(dom) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dev)
- virNodeDeviceFree(dev);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
+
+static int
+remoteDispatchDomainUndefine(
+ 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_undefine_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
+
+ if (virDomainUndefine(dom) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
+
+static int
+remoteDispatchDomainUpdateDeviceFlags(
+ 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_update_device_flags_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virDomainPtr dom = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(dom = get_nonnull_domain(conn, args->dom)))
+ goto cleanup;
+
+ if (virDomainUpdateDeviceFlags(dom, args->xml, args->flags) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dom)
+ virDomainFree(dom);
+ return rv;
+}
+
+static int
+remoteDispatchDomainXMLFromNative(
+ 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_xml_from_native_args *args,
+ remote_domain_xml_from_native_ret *ret)
+{
+ int rv = -1;
+ char *domainXml;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((domainXml = virConnectDomainXMLFromNative(conn, args->nativeFormat, args->nativeConfig, args->flags)) == NULL)
+ goto cleanup;
+
+ ret->domainXml = domainXml;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchDomainXMLToNative(
+ 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_xml_to_native_args *args,
+ remote_domain_xml_to_native_ret *ret)
+{
+ int rv = -1;
+ char *nativeConfig;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((nativeConfig = virConnectDomainXMLToNative(conn, args->nativeFormat, args->domainXml, args->flags)) == NULL)
+ goto cleanup;
+
+ ret->nativeConfig = nativeConfig;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+/* remoteDispatchFindStoragePoolSources has to be implemented manually */
+
+static int
+remoteDispatchGetCapabilities(
+ 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_get_capabilities_ret *ret)
+{
+ int rv = -1;
+ char *capabilities;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((capabilities = virConnectGetCapabilities(conn)) == NULL)
+ goto cleanup;
+
+ ret->capabilities = capabilities;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchGetHostname(
+ 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_get_hostname_ret *ret)
+{
+ int rv = -1;
+ char *hostname;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((hostname = virConnectGetHostname(conn)) == NULL)
+ goto cleanup;
+
+ ret->hostname = hostname;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchGetLibVersion(
+ 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_get_lib_version_ret *ret)
+{
+ int rv = -1;
+ unsigned long lib_ver;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (virConnectGetLibVersion(conn, &lib_ver) < 0)
+ goto cleanup;
+
+ ret->lib_ver = lib_ver;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+/* remoteDispatchGetMaxVcpus has to be implemented manually */
+
+static int
+remoteDispatchGetSysinfo(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_get_sysinfo_args *args,
+ remote_get_sysinfo_ret *ret)
+{
+ int rv = -1;
+ char *sysinfo;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((sysinfo = virConnectGetSysinfo(conn, args->flags)) == NULL)
+ goto cleanup;
+
+ ret->sysinfo = sysinfo;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+/* remoteDispatchGetType has to be implemented manually */
+
+static int
+remoteDispatchGetURI(
+ 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_get_uri_ret *ret)
+{
+ int rv = -1;
+ char *uri;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((uri = virConnectGetURI(conn)) == NULL)
+ goto cleanup;
+
+ ret->uri = uri;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchGetVersion(
+ 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_get_version_ret *ret)
+{
+ int rv = -1;
+ unsigned long hv_ver;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (virConnectGetVersion(conn, &hv_ver) < 0)
+ goto cleanup;
+
+ ret->hv_ver = hv_ver;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchInterfaceCreate(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_interface_create_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virInterfacePtr iface = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(iface = get_nonnull_interface(conn, args->iface)))
+ goto cleanup;
+
+ if (virInterfaceCreate(iface, args->flags) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (iface)
+ virInterfaceFree(iface);
+ return rv;
+}
+
+/* remoteDispatchInterfaceDefineXML has to be implemented manually */
+
+static int
+remoteDispatchInterfaceDestroy(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_interface_destroy_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virInterfacePtr iface = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(iface = get_nonnull_interface(conn, args->iface)))
+ goto cleanup;
+
+ if (virInterfaceDestroy(iface, args->flags) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (iface)
+ virInterfaceFree(iface);
+ return rv;
+}
+
+static int
+remoteDispatchInterfaceGetXMLDesc(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_interface_get_xml_desc_args *args,
+ remote_interface_get_xml_desc_ret *ret)
+{
+ int rv = -1;
+ virInterfacePtr iface = NULL;
+ char *xml;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(iface = get_nonnull_interface(conn, args->iface)))
+ goto cleanup;
+
+ if ((xml = virInterfaceGetXMLDesc(iface, args->flags)) == NULL)
+ goto cleanup;
+
+ ret->xml = xml;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (iface)
+ virInterfaceFree(iface);
+ return rv;
+}
+
+static int
+remoteDispatchInterfaceIsActive(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_interface_is_active_args *args,
+ remote_interface_is_active_ret *ret)
+{
+ int rv = -1;
+ virInterfacePtr iface = NULL;
+ int active;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(iface = get_nonnull_interface(conn, args->iface)))
+ goto cleanup;
+
+ if ((active = virInterfaceIsActive(iface)) < 0)
+ goto cleanup;
+
+ ret->active = active;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (iface)
+ virInterfaceFree(iface);
+ return rv;
+}
+
+/* remoteDispatchInterfaceLookupByMacString has to be implemented manually */
+
+/* remoteDispatchInterfaceLookupByName has to be implemented manually */
+
+static int
+remoteDispatchInterfaceUndefine(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_interface_undefine_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virInterfacePtr iface = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(iface = get_nonnull_interface(conn, args->iface)))
+ goto cleanup;
+
+ if (virInterfaceUndefine(iface) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (iface)
+ virInterfaceFree(iface);
+ return rv;
+}
+
+static int
+remoteDispatchIsSecure(
+ 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_is_secure_ret *ret)
+{
+ int rv = -1;
+ int secure;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((secure = virConnectIsSecure(conn)) < 0)
+ goto cleanup;
+
+ ret->secure = secure;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+/* remoteDispatchListDefinedDomains has to be implemented manually */
+
+/* remoteDispatchListDefinedInterfaces has to be implemented manually */
+
+/* remoteDispatchListDefinedNetworks has to be implemented manually */
+
+/* remoteDispatchListDefinedStoragePools has to be implemented manually */
+
+/* remoteDispatchListDomains has to be implemented manually */
+
+/* remoteDispatchListInterfaces has to be implemented manually */
+
+/* remoteDispatchListNetworks has to be implemented manually */
+
+/* remoteDispatchListNWFilters has to be implemented manually */
+
+/* remoteDispatchListSecrets has to be implemented manually */
+
+/* remoteDispatchListStoragePools has to be implemented manually */
+
+static int
+remoteDispatchNetworkCreate(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_create_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virNetworkPtr net = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(net = get_nonnull_network(conn, args->net)))
+ goto cleanup;
+
+ if (virNetworkCreate(net) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (net)
+ virNetworkFree(net);
+ return rv;
+}
+
+/* remoteDispatchNetworkCreateXML has to be implemented manually */
+
+/* remoteDispatchNetworkDefineXML has to be implemented manually */
+
+static int
+remoteDispatchNetworkDestroy(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_destroy_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virNetworkPtr net = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(net = get_nonnull_network(conn, args->net)))
+ goto cleanup;
+
+ if (virNetworkDestroy(net) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (net)
+ virNetworkFree(net);
+ return rv;
+}
+
+static int
+remoteDispatchNetworkDumpXML(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_dump_xml_args *args,
+ remote_network_dump_xml_ret *ret)
+{
+ int rv = -1;
+ virNetworkPtr net = NULL;
+ char *xml;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(net = get_nonnull_network(conn, args->net)))
+ goto cleanup;
+
+ if ((xml = virNetworkGetXMLDesc(net, args->flags)) == NULL)
+ goto cleanup;
+
+ ret->xml = xml;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (net)
+ virNetworkFree(net);
+ return rv;
+}
+
+static int
+remoteDispatchNetworkGetAutostart(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_get_autostart_args *args,
+ remote_network_get_autostart_ret *ret)
+{
+ int rv = -1;
+ virNetworkPtr net = NULL;
+ int autostart;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(net = get_nonnull_network(conn, args->net)))
+ goto cleanup;
+
+ if (virNetworkGetAutostart(net, &autostart) < 0)
+ goto cleanup;
+
+ ret->autostart = autostart;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (net)
+ virNetworkFree(net);
+ return rv;
+}
+
+static int
+remoteDispatchNetworkGetBridgeName(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_get_bridge_name_args *args,
+ remote_network_get_bridge_name_ret *ret)
+{
+ int rv = -1;
+ virNetworkPtr net = NULL;
+ char *name;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(net = get_nonnull_network(conn, args->net)))
+ goto cleanup;
+
+ if ((name = virNetworkGetBridgeName(net)) == NULL)
+ goto cleanup;
+
+ ret->name = name;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (net)
+ virNetworkFree(net);
+ return rv;
+}
+
+static int
+remoteDispatchNetworkIsActive(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_is_active_args *args,
+ remote_network_is_active_ret *ret)
+{
+ int rv = -1;
+ virNetworkPtr net = NULL;
+ int active;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(net = get_nonnull_network(conn, args->net)))
+ goto cleanup;
+
+ if ((active = virNetworkIsActive(net)) < 0)
+ goto cleanup;
+
+ ret->active = active;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (net)
+ virNetworkFree(net);
+ return rv;
+}
+
+static int
+remoteDispatchNetworkIsPersistent(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_is_persistent_args *args,
+ remote_network_is_persistent_ret *ret)
+{
+ int rv = -1;
+ virNetworkPtr net = NULL;
+ int persistent;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(net = get_nonnull_network(conn, args->net)))
+ goto cleanup;
+
+ if ((persistent = virNetworkIsPersistent(net)) < 0)
+ goto cleanup;
+
+ ret->persistent = persistent;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (net)
+ virNetworkFree(net);
+ return rv;
+}
+
+/* remoteDispatchNetworkLookupByName has to be implemented manually */
+
+/* remoteDispatchNetworkLookupByUUID has to be implemented manually */
+
+static int
+remoteDispatchNetworkSetAutostart(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_set_autostart_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virNetworkPtr net = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(net = get_nonnull_network(conn, args->net)))
+ goto cleanup;
+
+ if (virNetworkSetAutostart(net, args->autostart) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (net)
+ virNetworkFree(net);
+ return rv;
+}
+
+static int
+remoteDispatchNetworkUndefine(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_network_undefine_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virNetworkPtr net = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(net = get_nonnull_network(conn, args->net)))
+ goto cleanup;
+
+ if (virNetworkUndefine(net) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (net)
+ virNetworkFree(net);
+ return rv;
+}
+
+/* remoteDispatchNodeDeviceCreateXML has to be implemented manually */
+
+static int
+remoteDispatchNodeDeviceDestroy(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_device_destroy_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virNodeDevicePtr dev = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ goto cleanup;
+
+ if (virNodeDeviceDestroy(dev) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dev)
+ virNodeDeviceFree(dev);
+ return rv;
+}
+
+static int
+remoteDispatchNodeDeviceDettach(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_device_dettach_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virNodeDevicePtr dev = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ goto cleanup;
+
+ if (virNodeDeviceDettach(dev) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dev)
+ virNodeDeviceFree(dev);
+ return rv;
+}
+
+static int
+remoteDispatchNodeDeviceDumpXML(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_device_dump_xml_args *args,
+ remote_node_device_dump_xml_ret *ret)
+{
+ int rv = -1;
+ virNodeDevicePtr dev = NULL;
+ char *xml;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ goto cleanup;
+
+ if ((xml = virNodeDeviceGetXMLDesc(dev, args->flags)) == NULL)
+ goto cleanup;
+
+ ret->xml = xml;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dev)
+ virNodeDeviceFree(dev);
+ return rv;
+}
+
+/* remoteDispatchNodeDeviceGetParent has to be implemented manually */
+
+/* remoteDispatchNodeDeviceListCaps has to be implemented manually */
+
+/* remoteDispatchNodeDeviceLookupByName has to be implemented manually */
+
+static int
+remoteDispatchNodeDeviceNumOfCaps(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_device_num_of_caps_args *args,
+ remote_node_device_num_of_caps_ret *ret)
+{
+ int rv = -1;
+ virNodeDevicePtr dev = NULL;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ goto cleanup;
+
+ if ((num = virNodeDeviceNumOfCaps(dev)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dev)
+ virNodeDeviceFree(dev);
+ return rv;
+}
+
+static int
+remoteDispatchNodeDeviceReAttach(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_device_re_attach_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virNodeDevicePtr dev = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ goto cleanup;
+
+ if (virNodeDeviceReAttach(dev) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dev)
+ virNodeDeviceFree(dev);
+ return rv;
+}
+
+static int
+remoteDispatchNodeDeviceReset(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_node_device_reset_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virNodeDevicePtr dev = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ goto cleanup;
+
+ if (virNodeDeviceReset(dev) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (dev)
+ virNodeDeviceFree(dev);
+ return rv;
+}
+
+/* remoteDispatchNodeGetCellsFreeMemory has to be implemented manually */
+
+/* remoteDispatchNodeGetFreeMemory has to be implemented manually */
+
+/* remoteDispatchNodeGetInfo has to be implemented manually */
+
+/* remoteDispatchNodeGetSecurityModel has to be implemented manually */
+
+/* remoteDispatchNodeListDevices has to be implemented manually */
+
+/* remoteDispatchNodeNumOfDevices has to be implemented manually */
+
+static int
+remoteDispatchNumOfDefinedDomains(
+ 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_num_of_defined_domains_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfDefinedDomains(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchNumOfDefinedInterfaces(
+ 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_num_of_defined_interfaces_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfDefinedInterfaces(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchNumOfDefinedNetworks(
+ 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_num_of_defined_networks_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfDefinedNetworks(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchNumOfDefinedStoragePools(
+ 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_num_of_defined_storage_pools_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfDefinedStoragePools(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchNumOfDomains(
+ 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_num_of_domains_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfDomains(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchNumOfInterfaces(
+ 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_num_of_interfaces_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfInterfaces(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchNumOfNetworks(
+ 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_num_of_networks_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfNetworks(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchNumOfNWFilters(
+ 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_num_of_nwfilters_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfNWFilters(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchNumOfSecrets(
+ 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_num_of_secrets_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfSecrets(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+static int
+remoteDispatchNumOfStoragePools(
+ 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_num_of_storage_pools_ret *ret)
+{
+ int rv = -1;
+ int num;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((num = virConnectNumOfStoragePools(conn)) < 0)
+ goto cleanup;
+
+ ret->num = num;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}
+
+/* remoteDispatchNWFilterDefineXML has to be implemented manually */
+
+static int
+remoteDispatchNWFilterGetXMLDesc(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_nwfilter_get_xml_desc_args *args,
+ remote_nwfilter_get_xml_desc_ret *ret)
+{
+ int rv = -1;
+ virNWFilterPtr nwfilter = NULL;
+ char *xml;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter)))
+ goto cleanup;
+
+ if ((xml = virNWFilterGetXMLDesc(nwfilter, args->flags)) == NULL)
+ goto cleanup;
+
+ ret->xml = xml;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (nwfilter)
+ virNWFilterFree(nwfilter);
+ return rv;
+}
+
+/* remoteDispatchNWFilterLookupByName has to be implemented manually */
+
+/* remoteDispatchNWFilterLookupByUUID has to be implemented manually */
+
+static int
+remoteDispatchNWFilterUndefine(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_nwfilter_undefine_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virNWFilterPtr nwfilter = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter)))
+ goto cleanup;
+
+ if (virNWFilterUndefine(nwfilter) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (nwfilter)
+ virNWFilterFree(nwfilter);
+ return rv;
+}
+
+/* remoteDispatchOpen has to be implemented manually */
+
+/* remoteDispatchSecretDefineXML has to be implemented manually */
+
+/* remoteDispatchSecretGetValue has to be implemented manually */
+
+static int
+remoteDispatchSecretGetXMLDesc(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_secret_get_xml_desc_args *args,
+ remote_secret_get_xml_desc_ret *ret)
+{
+ int rv = -1;
+ virSecretPtr secret = NULL;
+ char *xml;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(secret = get_nonnull_secret(conn, args->secret)))
+ goto cleanup;
+
+ if ((xml = virSecretGetXMLDesc(secret, args->flags)) == NULL)
+ goto cleanup;
+
+ ret->xml = xml;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (secret)
+ virSecretFree(secret);
+ return rv;
+}
+
+/* remoteDispatchSecretLookupByUsage has to be implemented manually */
+
+/* remoteDispatchSecretLookupByUUID has to be implemented manually */
+
+static int
+remoteDispatchSecretSetValue(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_secret_set_value_args *args,
+ void *ret ATTRIBUTE_UNUSED)
+{
+ int rv = -1;
+ virSecretPtr secret = NULL;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if (!(secret = get_nonnull_secret(conn, args->secret)))
+ goto cleanup;
+
+ if (virSecretSetValue(secret, (const unsigned char *)args->value.value_val, args->value.value_len, args->flags) < 0)
+ goto cleanup;
+
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (secret)
+ virSecretFree(secret);
return rv;
}
static int
-remoteDispatchNodeDeviceDettach(
+remoteDispatchSecretUndefine(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_node_device_dettach_args *args,
+ remote_secret_undefine_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virNodeDevicePtr dev = NULL;
+ virSecretPtr secret = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ if (!(secret = get_nonnull_secret(conn, args->secret)))
goto cleanup;
- if (virNodeDeviceDettach(dev) < 0)
+ if (virSecretUndefine(secret) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dev)
- virNodeDeviceFree(dev);
+ if (secret)
+ virSecretFree(secret);
return rv;
}
-/* remoteDispatchNodeDeviceDumpXML has to be implemented manually */
-
-/* remoteDispatchNodeDeviceGetParent has to be implemented manually */
-
-/* remoteDispatchNodeDeviceListCaps has to be implemented manually */
-
-/* remoteDispatchNodeDeviceLookupByName has to be implemented manually */
-
-/* remoteDispatchNodeDeviceNumOfCaps has to be implemented manually */
-
static int
-remoteDispatchNodeDeviceReAttach(
+remoteDispatchStoragePoolBuild(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_node_device_re_attach_args *args,
+ remote_storage_pool_build_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virNodeDevicePtr dev = NULL;
+ virStoragePoolPtr pool = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virNodeDeviceReAttach(dev) < 0)
+ if (virStoragePoolBuild(pool, args->flags) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dev)
- virNodeDeviceFree(dev);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
static int
-remoteDispatchNodeDeviceReset(
+remoteDispatchStoragePoolCreate(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_node_device_reset_args *args,
+ remote_storage_pool_create_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virNodeDevicePtr dev = NULL;
+ virStoragePoolPtr pool = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(dev = virNodeDeviceLookupByName(conn, args->name)))
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virNodeDeviceReset(dev) < 0)
+ if (virStoragePoolCreate(pool, args->flags) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (dev)
- virNodeDeviceFree(dev);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
-/* remoteDispatchNodeGetCellsFreeMemory has to be implemented manually */
-
-/* remoteDispatchNodeGetFreeMemory has to be implemented manually */
-
-/* remoteDispatchNodeGetInfo has to be implemented manually */
-
-/* remoteDispatchNodeGetSecurityModel has to be implemented manually */
-
-/* remoteDispatchNodeListDevices has to be implemented manually */
-
-/* remoteDispatchNodeNumOfDevices has to be implemented manually */
-
-/* remoteDispatchNumOfDefinedDomains has to be implemented manually */
-
-/* remoteDispatchNumOfDefinedInterfaces has to be implemented manually */
-
-/* remoteDispatchNumOfDefinedNetworks has to be implemented manually */
-
-/* remoteDispatchNumOfDefinedStoragePools has to be implemented manually */
-
-/* remoteDispatchNumOfDomains has to be implemented manually */
-
-/* remoteDispatchNumOfInterfaces has to be implemented manually */
-
-/* remoteDispatchNumOfNetworks has to be implemented manually */
-
-/* remoteDispatchNumOfNWFilters has to be implemented manually */
-
-/* remoteDispatchNumOfSecrets has to be implemented manually */
-
-/* remoteDispatchNumOfStoragePools has to be implemented manually */
-
-/* remoteDispatchNWFilterDefineXML has to be implemented manually */
-
-/* remoteDispatchNWFilterGetXMLDesc has to be implemented manually */
-
-/* remoteDispatchNWFilterLookupByName has to be implemented manually */
+/* remoteDispatchStoragePoolCreateXML has to be implemented manually */
-/* remoteDispatchNWFilterLookupByUUID has to be implemented manually */
+/* remoteDispatchStoragePoolDefineXML has to be implemented manually */
static int
-remoteDispatchNWFilterUndefine(
+remoteDispatchStoragePoolDelete(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_nwfilter_undefine_args *args,
+ remote_storage_pool_delete_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virNWFilterPtr nwfilter = NULL;
+ virStoragePoolPtr pool = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter)))
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virNWFilterUndefine(nwfilter) < 0)
+ if (virStoragePoolDelete(pool, args->flags) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (nwfilter)
- virNWFilterFree(nwfilter);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
-/* remoteDispatchOpen has to be implemented manually */
-
-/* remoteDispatchSecretDefineXML has to be implemented manually */
-
-/* remoteDispatchSecretGetValue has to be implemented manually */
-
-/* remoteDispatchSecretGetXMLDesc has to be implemented manually */
-
-/* remoteDispatchSecretLookupByUsage has to be implemented manually */
-
-/* remoteDispatchSecretLookupByUUID has to be implemented manually */
-
static int
-remoteDispatchSecretSetValue(
+remoteDispatchStoragePoolDestroy(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_secret_set_value_args *args,
+ remote_storage_pool_destroy_args *args,
void *ret ATTRIBUTE_UNUSED)
{
int rv = -1;
- virSecretPtr secret = NULL;
+ virStoragePoolPtr pool = NULL;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(secret = get_nonnull_secret(conn, args->secret)))
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virSecretSetValue(secret, (const unsigned char *)args->value.value_val, args->value.value_len, args->flags) < 0)
+ if (virStoragePoolDestroy(pool) < 0)
goto cleanup;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (secret)
- virSecretFree(secret);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
static int
-remoteDispatchSecretUndefine(
+remoteDispatchStoragePoolDumpXML(
struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_secret_undefine_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_storage_pool_dump_xml_args *args,
+ remote_storage_pool_dump_xml_ret *ret)
{
int rv = -1;
- virSecretPtr secret = NULL;
+ virStoragePoolPtr pool = NULL;
+ char *xml;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
goto cleanup;
}
- if (!(secret = get_nonnull_secret(conn, args->secret)))
+ if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virSecretUndefine(secret) < 0)
+ if ((xml = virStoragePoolGetXMLDesc(pool, args->flags)) == NULL)
goto cleanup;
+ ret->xml = xml;
rv = 0;
cleanup:
if (rv < 0)
remoteDispatchError(rerr);
- if (secret)
- virSecretFree(secret);
+ if (pool)
+ virStoragePoolFree(pool);
return rv;
}
static int
-remoteDispatchStoragePoolBuild(
+remoteDispatchStoragePoolGetAutostart(
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_build_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_storage_pool_get_autostart_args *args,
+ remote_storage_pool_get_autostart_ret *ret)
{
int rv = -1;
virStoragePoolPtr pool = NULL;
+ int autostart;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virStoragePoolBuild(pool, args->flags) < 0)
+ if (virStoragePoolGetAutostart(pool, &autostart) < 0)
goto cleanup;
+ ret->autostart = autostart;
rv = 0;
cleanup:
return rv;
}
+/* remoteDispatchStoragePoolGetInfo has to be implemented manually */
+
static int
-remoteDispatchStoragePoolCreate(
+remoteDispatchStoragePoolIsActive(
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_create_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_storage_pool_is_active_args *args,
+ remote_storage_pool_is_active_ret *ret)
{
int rv = -1;
virStoragePoolPtr pool = NULL;
+ int active;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virStoragePoolCreate(pool, args->flags) < 0)
+ if ((active = virStoragePoolIsActive(pool)) < 0)
goto cleanup;
+ ret->active = active;
rv = 0;
cleanup:
return rv;
}
-/* remoteDispatchStoragePoolCreateXML has to be implemented manually */
-
-/* remoteDispatchStoragePoolDefineXML has to be implemented manually */
-
static int
-remoteDispatchStoragePoolDelete(
+remoteDispatchStoragePoolIsPersistent(
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_delete_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_storage_pool_is_persistent_args *args,
+ remote_storage_pool_is_persistent_ret *ret)
{
int rv = -1;
virStoragePoolPtr pool = NULL;
+ int persistent;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virStoragePoolDelete(pool, args->flags) < 0)
+ if ((persistent = virStoragePoolIsPersistent(pool)) < 0)
goto cleanup;
+ ret->persistent = persistent;
rv = 0;
cleanup:
return rv;
}
+/* remoteDispatchStoragePoolListVolumes has to be implemented manually */
+
+/* remoteDispatchStoragePoolLookupByName has to be implemented manually */
+
+/* remoteDispatchStoragePoolLookupByUUID has to be implemented manually */
+
+/* remoteDispatchStoragePoolLookupByVolume has to be implemented manually */
+
static int
-remoteDispatchStoragePoolDestroy(
+remoteDispatchStoragePoolNumOfVolumes(
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_destroy_args *args,
- void *ret ATTRIBUTE_UNUSED)
+ remote_storage_pool_num_of_volumes_args *args,
+ remote_storage_pool_num_of_volumes_ret *ret)
{
int rv = -1;
virStoragePoolPtr pool = NULL;
+ int num;
if (!conn) {
virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
if (!(pool = get_nonnull_storage_pool(conn, args->pool)))
goto cleanup;
- if (virStoragePoolDestroy(pool) < 0)
+ if ((num = virStoragePoolNumOfVolumes(pool)) < 0)
goto cleanup;
+ ret->num = num;
rv = 0;
cleanup:
return rv;
}
-/* remoteDispatchStoragePoolDumpXML has to be implemented manually */
-
-/* remoteDispatchStoragePoolGetAutostart has to be implemented manually */
-
-/* remoteDispatchStoragePoolGetInfo has to be implemented manually */
-
-/* remoteDispatchStoragePoolIsActive has to be implemented manually */
-
-/* remoteDispatchStoragePoolIsPersistent has to be implemented manually */
-
-/* remoteDispatchStoragePoolListVolumes has to be implemented manually */
-
-/* remoteDispatchStoragePoolLookupByName has to be implemented manually */
-
-/* remoteDispatchStoragePoolLookupByUUID has to be implemented manually */
-
-/* remoteDispatchStoragePoolLookupByVolume has to be implemented manually */
-
-/* remoteDispatchStoragePoolNumOfVolumes has to be implemented manually */
-
static int
remoteDispatchStoragePoolRefresh(
struct qemud_server *server ATTRIBUTE_UNUSED,
/* remoteDispatchStorageVolDownload has to be implemented manually */
-/* remoteDispatchStorageVolDumpXML has to be implemented manually */
+static int
+remoteDispatchStorageVolDumpXML(
+ 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_dump_xml_args *args,
+ remote_storage_vol_dump_xml_ret *ret)
+{
+ int rv = -1;
+ virStorageVolPtr vol = NULL;
+ char *xml;
+
+ 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 ((xml = virStorageVolGetXMLDesc(vol, args->flags)) == NULL)
+ goto cleanup;
+
+ ret->xml = xml;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (vol)
+ virStorageVolFree(vol);
+ return rv;
+}
/* remoteDispatchStorageVolGetInfo has to be implemented manually */
-/* remoteDispatchStorageVolGetPath has to be implemented manually */
+static int
+remoteDispatchStorageVolGetPath(
+ 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_path_args *args,
+ remote_storage_vol_get_path_ret *ret)
+{
+ int rv = -1;
+ virStorageVolPtr vol = NULL;
+ char *name;
+
+ 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 ((name = virStorageVolGetPath(vol)) == NULL)
+ goto cleanup;
+
+ ret->name = name;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ if (vol)
+ virStorageVolFree(vol);
+ return rv;
+}
/* remoteDispatchStorageVolLookupByKey has to be implemented manually */
return rv;
}
-/* remoteDispatchSupportsFeature has to be implemented manually */
+static int
+remoteDispatchSupportsFeature(
+ struct qemud_server *server ATTRIBUTE_UNUSED,
+ struct qemud_client *client ATTRIBUTE_UNUSED,
+ virConnectPtr conn,
+ remote_message_header *hdr ATTRIBUTE_UNUSED,
+ remote_error *rerr,
+ remote_supports_feature_args *args,
+ remote_supports_feature_ret *ret)
+{
+ int rv = -1;
+ int supported;
+
+ if (!conn) {
+ virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open"));
+ goto cleanup;
+ }
+
+ if ((supported = virDrvSupportsFeature(conn, args->feature)) < 0)
+ goto cleanup;
+
+ ret->supported = supported;
+ rv = 0;
+
+cleanup:
+ if (rv < 0)
+ remoteDispatchError(rerr);
+ return rv;
+}