* remote_driver.c: driver to provide access to libvirtd running
* on a remote machine
*
- * Copyright (C) 2007-2012 Red Hat, Inc.
+ * Copyright (C) 2007-2013 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
return rv;
}
+static int
+remoteNodeDeviceDetachFlags(virNodeDevicePtr dev,
+ const char *driverName,
+ unsigned int flags)
+{
+ int rv = -1;
+ remote_node_device_detach_flags_args args;
+ /* This method is unusual in that it uses the HV driver, not the
+ * devMon driver hence its use of privateData, instead of
+ * nodeDevicePrivateData
+ */
+ struct private_data *priv = dev->conn->privateData;
+
+ remoteDriverLock(priv);
+
+ args.name = dev->name;
+ args.driverName = driverName ? (char**)&driverName : NULL;
+ args.flags = flags;
+
+ if (call(dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_DETACH_FLAGS,
+ (xdrproc_t) xdr_remote_node_device_detach_flags_args,
+ (char *) &args, (xdrproc_t) xdr_void, (char *) NULL) == -1)
+ goto done;
+
+ rv = 0;
+
+done:
+ remoteDriverUnlock(priv);
+ return rv;
+}
+
static int
remoteNodeDeviceReAttach(virNodeDevicePtr dev)
{
.domainMigratePrepare2 = remoteDomainMigratePrepare2, /* 0.5.0 */
.domainMigrateFinish2 = remoteDomainMigrateFinish2, /* 0.5.0 */
.nodeDeviceDettach = remoteNodeDeviceDettach, /* 0.6.1 */
+ .nodeDeviceDetachFlags = remoteNodeDeviceDetachFlags, /* 1.0.5 */
.nodeDeviceReAttach = remoteNodeDeviceReAttach, /* 0.6.1 */
.nodeDeviceReset = remoteNodeDeviceReset, /* 0.6.1 */
.domainMigratePrepareTunnel = remoteDomainMigratePrepareTunnel, /* 0.7.2 */
* remote_internal driver and libvirtd. This protocol is
* internal and may change at any time.
*
- * Copyright (C) 2006-2012 Red Hat, Inc.
+ * Copyright (C) 2006-2013 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
remote_nonnull_string name;
};
+struct remote_node_device_detach_flags_args {
+ remote_nonnull_string name;
+ remote_string driverName;
+ unsigned int flags;
+};
+
struct remote_node_device_re_attach_args {
remote_nonnull_string name;
};
/**
* @generate: both
*/
- REMOTE_PROC_DOMAIN_MIGRATE_SET_COMPRESSION_CACHE = 300
+ REMOTE_PROC_DOMAIN_MIGRATE_SET_COMPRESSION_CACHE = 300,
+
+ /**
+ * @generate: server
+ */
+ REMOTE_PROC_NODE_DEVICE_DETACH_FLAGS = 301
};
struct remote_node_device_dettach_args {
remote_nonnull_string name;
};
+struct remote_node_device_detach_flags_args {
+ remote_nonnull_string name;
+ remote_string driverName;
+ u_int flags;
+};
struct remote_node_device_re_attach_args {
remote_nonnull_string name;
};
REMOTE_PROC_DOMAIN_GET_JOB_STATS = 298,
REMOTE_PROC_DOMAIN_MIGRATE_GET_COMPRESSION_CACHE = 299,
REMOTE_PROC_DOMAIN_MIGRATE_SET_COMPRESSION_CACHE = 300,
+ REMOTE_PROC_NODE_DEVICE_DETACH_FLAGS = 301,
};