mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-27 08:05:24 +00:00
85 lines
2.4 KiB
Diff
85 lines
2.4 KiB
Diff
|
From ff272552c297966ace3492aefe91fc830152251a Mon Sep 17 00:00:00 2001
|
||
|
From: David Allan <dallan@redhat.com>
|
||
|
Date: Tue, 19 May 2009 16:26:12 -0400
|
||
|
Subject: [PATCH] Step 5 of 8 Implement the RPC client
|
||
|
|
||
|
---
|
||
|
src/remote_internal.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
1 files changed, 55 insertions(+), 0 deletions(-)
|
||
|
|
||
|
diff --git a/src/remote_internal.c b/src/remote_internal.c
|
||
|
index 4b3afb0..e665ef8 100644
|
||
|
--- a/src/remote_internal.c
|
||
|
+++ b/src/remote_internal.c
|
||
|
@@ -4978,6 +4978,59 @@ done:
|
||
|
}
|
||
|
|
||
|
|
||
|
+static virNodeDevicePtr
|
||
|
+remoteNodeDeviceCreateXML(virConnectPtr conn,
|
||
|
+ const char *xmlDesc,
|
||
|
+ unsigned int flags)
|
||
|
+{
|
||
|
+ remote_node_device_create_xml_args args;
|
||
|
+ remote_node_device_create_xml_ret ret;
|
||
|
+ virNodeDevicePtr dev = NULL;
|
||
|
+ struct private_data *priv = conn->privateData;
|
||
|
+
|
||
|
+ remoteDriverLock(priv);
|
||
|
+
|
||
|
+ memset(&ret, 0, sizeof ret);
|
||
|
+ args.xml_desc = (char *)xmlDesc;
|
||
|
+ args.flags = flags;
|
||
|
+
|
||
|
+ if (call(conn, priv, 0, REMOTE_PROC_NODE_DEVICE_CREATE_XML,
|
||
|
+ (xdrproc_t) xdr_remote_node_device_create_xml_args, (char *) &args,
|
||
|
+ (xdrproc_t) xdr_remote_node_device_create_xml_ret, (char *) &ret) == -1)
|
||
|
+ goto done;
|
||
|
+
|
||
|
+ dev = get_nonnull_node_device(conn, ret.dev);
|
||
|
+ xdr_free ((xdrproc_t) xdr_remote_node_device_create_xml_ret, (char *) &ret);
|
||
|
+
|
||
|
+done:
|
||
|
+ remoteDriverUnlock(priv);
|
||
|
+ return dev;
|
||
|
+}
|
||
|
+
|
||
|
+static int
|
||
|
+remoteNodeDeviceDestroy(virNodeDevicePtr dev)
|
||
|
+{
|
||
|
+ int rv = -1;
|
||
|
+ remote_node_device_destroy_args args;
|
||
|
+ struct private_data *priv = dev->conn->privateData;
|
||
|
+
|
||
|
+ remoteDriverLock(priv);
|
||
|
+
|
||
|
+ args.name = dev->name;
|
||
|
+
|
||
|
+ if (call(dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_DESTROY,
|
||
|
+ (xdrproc_t) xdr_remote_node_device_destroy_args, (char *) &args,
|
||
|
+ (xdrproc_t) xdr_void, (char *) NULL) == -1)
|
||
|
+ goto done;
|
||
|
+
|
||
|
+ rv = 0;
|
||
|
+
|
||
|
+done:
|
||
|
+ remoteDriverUnlock(priv);
|
||
|
+ return rv;
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
/*----------------------------------------------------------------------*/
|
||
|
|
||
|
static int
|
||
|
@@ -6982,6 +7035,8 @@ static virDeviceMonitor dev_monitor = {
|
||
|
.deviceGetParent = remoteNodeDeviceGetParent,
|
||
|
.deviceNumOfCaps = remoteNodeDeviceNumOfCaps,
|
||
|
.deviceListCaps = remoteNodeDeviceListCaps,
|
||
|
+ .deviceCreateXML = remoteNodeDeviceCreateXML,
|
||
|
+ .deviceDestroy = remoteNodeDeviceDestroy
|
||
|
};
|
||
|
|
||
|
|
||
|
--
|
||
|
1.6.0.6
|