2007-02-14 01:40:09 +00:00
|
|
|
/*
|
2009-05-21 14:16:55 +00:00
|
|
|
* qemu_conf.h: QEMU configuration management
|
2007-02-14 01:40:09 +00:00
|
|
|
*
|
2013-02-06 18:17:20 +00:00
|
|
|
* Copyright (C) 2006-2007, 2009-2013 Red Hat, Inc.
|
2007-02-14 01:40:09 +00:00
|
|
|
* Copyright (C) 2006 Daniel P. Berrange
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2012-09-20 22:30:55 +00:00
|
|
|
* License along with this library. If not, see
|
2012-07-21 10:06:23 +00:00
|
|
|
* <http://www.gnu.org/licenses/>.
|
2007-02-14 01:40:09 +00:00
|
|
|
*
|
|
|
|
* Author: Daniel P. Berrange <berrange@redhat.com>
|
|
|
|
*/
|
|
|
|
|
2007-02-14 15:41:03 +00:00
|
|
|
#ifndef __QEMUD_CONF_H
|
2010-03-09 18:22:22 +00:00
|
|
|
# define __QEMUD_CONF_H
|
2007-02-14 01:40:09 +00:00
|
|
|
|
2012-12-12 16:48:24 +00:00
|
|
|
# include "virebtables.h"
|
2010-03-09 18:22:22 +00:00
|
|
|
# include "internal.h"
|
|
|
|
# include "capabilities.h"
|
|
|
|
# include "network_conf.h"
|
|
|
|
# include "domain_conf.h"
|
2013-11-25 16:26:02 +00:00
|
|
|
# include "snapshot_conf.h"
|
2010-03-09 18:22:22 +00:00
|
|
|
# include "domain_event.h"
|
2012-12-13 15:49:48 +00:00
|
|
|
# include "virthread.h"
|
Refactor the security drivers to simplify usage
The current security driver usage requires horrible code like
if (driver->securityDriver &&
driver->securityDriver->domainSetSecurityHostdevLabel &&
driver->securityDriver->domainSetSecurityHostdevLabel(driver->securityDriver,
vm, hostdev) < 0)
This pair of checks for NULL clutters up the code, making the driver
calls 2 lines longer than they really need to be. The goal of the
patchset is to change the calling convention to simply
if (virSecurityManagerSetHostdevLabel(driver->securityDriver,
vm, hostdev) < 0)
The first check for 'driver->securityDriver' being NULL is removed
by introducing a 'no op' security driver that will always be present
if no real driver is enabled. This guarentees driver->securityDriver
!= NULL.
The second check for 'driver->securityDriver->domainSetSecurityHostdevLabel'
being non-NULL is hidden in a new abstraction called virSecurityManager.
This separates the driver callbacks, from main internal API. The addition
of a virSecurityManager object, that is separate from the virSecurityDriver
struct also allows for security drivers to carry state / configuration
information directly. Thus the DAC/Stack drivers from src/qemu which
used to pull config from 'struct qemud_driver' can now be moved into
the 'src/security' directory and store their config directly.
* src/qemu/qemu_conf.h, src/qemu/qemu_driver.c: Update to
use new virSecurityManager APIs
* src/qemu/qemu_security_dac.c, src/qemu/qemu_security_dac.h
src/qemu/qemu_security_stacked.c, src/qemu/qemu_security_stacked.h:
Move into src/security directory
* src/security/security_stack.c, src/security/security_stack.h,
src/security/security_dac.c, src/security/security_dac.h: Generic
versions of previous QEMU specific drivers
* src/security/security_apparmor.c, src/security/security_apparmor.h,
src/security/security_driver.c, src/security/security_driver.h,
src/security/security_selinux.c, src/security/security_selinux.h:
Update to take virSecurityManagerPtr object as the first param
in all callbacks
* src/security/security_nop.c, src/security/security_nop.h: Stub
implementation of all security driver APIs.
* src/security/security_manager.h, src/security/security_manager.c:
New internal API for invoking security drivers
* src/libvirt.c: Add missing debug for security APIs
2010-11-17 20:26:30 +00:00
|
|
|
# include "security/security_manager.h"
|
2012-12-13 14:52:25 +00:00
|
|
|
# include "virpci.h"
|
2012-12-12 17:04:51 +00:00
|
|
|
# include "virusb.h"
|
2013-05-03 18:07:29 +00:00
|
|
|
# include "virscsi.h"
|
2010-03-09 18:22:22 +00:00
|
|
|
# include "cpu_conf.h"
|
|
|
|
# include "driver.h"
|
2013-01-09 15:28:58 +00:00
|
|
|
# include "virportallocator.h"
|
2012-12-12 16:27:01 +00:00
|
|
|
# include "vircommand.h"
|
2012-12-13 15:39:07 +00:00
|
|
|
# include "virthreadpool.h"
|
2010-10-26 14:04:46 +00:00
|
|
|
# include "locking/lock_manager.h"
|
2012-08-22 13:37:05 +00:00
|
|
|
# include "qemu_capabilities.h"
|
2013-07-15 14:53:13 +00:00
|
|
|
# include "virclosecallbacks.h"
|
2014-03-05 09:58:54 +00:00
|
|
|
# include "virhostdev.h"
|
2007-06-26 23:48:46 +00:00
|
|
|
|
2013-05-30 03:00:51 +00:00
|
|
|
# ifdef CPU_SETSIZE /* Linux */
|
|
|
|
# define QEMUD_CPUMASK_LEN CPU_SETSIZE
|
|
|
|
# elif defined(_SC_NPROCESSORS_CONF) /* Cygwin */
|
|
|
|
# define QEMUD_CPUMASK_LEN (sysconf(_SC_NPROCESSORS_CONF))
|
|
|
|
# else
|
|
|
|
# error "Port me"
|
|
|
|
# endif
|
2007-06-26 23:48:46 +00:00
|
|
|
|
2014-03-01 06:28:56 +00:00
|
|
|
# define QEMU_DRIVER_NAME "QEMU"
|
|
|
|
|
2012-11-28 16:43:10 +00:00
|
|
|
typedef struct _virQEMUDriver virQEMUDriver;
|
|
|
|
typedef virQEMUDriver *virQEMUDriverPtr;
|
|
|
|
|
2013-01-10 21:03:14 +00:00
|
|
|
typedef struct _virQEMUDriverConfig virQEMUDriverConfig;
|
|
|
|
typedef virQEMUDriverConfig *virQEMUDriverConfigPtr;
|
|
|
|
|
|
|
|
/* Main driver config. The data in these object
|
|
|
|
* instances is immutable, so can be accessed
|
|
|
|
* without locking. Threads must, however, hold
|
|
|
|
* a valid reference on the object to prevent it
|
|
|
|
* being released while they use it.
|
|
|
|
*
|
|
|
|
* eg
|
|
|
|
* qemuDriverLock(driver);
|
|
|
|
* virQEMUDriverConfigPtr cfg = virObjectRef(driver->config);
|
|
|
|
* qemuDriverUnlock(driver);
|
|
|
|
*
|
|
|
|
* ...do stuff with 'cfg'..
|
|
|
|
*
|
|
|
|
* virObjectUnref(cfg);
|
|
|
|
*/
|
|
|
|
struct _virQEMUDriverConfig {
|
|
|
|
virObject parent;
|
2010-12-08 06:19:17 +00:00
|
|
|
|
2012-10-31 19:03:54 +00:00
|
|
|
bool privileged;
|
2012-09-17 13:36:47 +00:00
|
|
|
const char *uri;
|
2009-06-12 13:20:13 +00:00
|
|
|
|
2009-07-15 21:25:01 +00:00
|
|
|
uid_t user;
|
|
|
|
gid_t group;
|
2010-01-13 16:43:29 +00:00
|
|
|
int dynamicOwnership;
|
2009-07-15 21:25:01 +00:00
|
|
|
|
2009-07-22 15:08:04 +00:00
|
|
|
int cgroupControllers;
|
|
|
|
char **cgroupDeviceACL;
|
|
|
|
|
2012-12-11 15:59:21 +00:00
|
|
|
/* These five directories are ones libvirtd uses (so must be root:root
|
2009-08-25 15:49:09 +00:00
|
|
|
* to avoid security risk from QEMU processes */
|
2012-12-11 15:59:21 +00:00
|
|
|
char *configBaseDir;
|
2007-06-26 22:13:21 +00:00
|
|
|
char *configDir;
|
|
|
|
char *autostartDir;
|
2008-07-11 19:34:11 +00:00
|
|
|
char *logDir;
|
2008-12-18 15:22:49 +00:00
|
|
|
char *stateDir;
|
2009-08-25 15:49:09 +00:00
|
|
|
/* These two directories are ones QEMU processes use (so must match
|
|
|
|
* the QEMU user/group */
|
|
|
|
char *libDir;
|
|
|
|
char *cacheDir;
|
2010-04-01 15:57:32 +00:00
|
|
|
char *saveDir;
|
2010-04-02 14:10:37 +00:00
|
|
|
char *snapshotDir;
|
2013-01-10 21:03:14 +00:00
|
|
|
|
|
|
|
bool vncAutoUnixSocket;
|
|
|
|
bool vncTLS;
|
|
|
|
bool vncTLSx509verify;
|
|
|
|
bool vncSASL;
|
2007-10-12 16:05:44 +00:00
|
|
|
char *vncTLSx509certdir;
|
2008-07-11 19:34:11 +00:00
|
|
|
char *vncListen;
|
2009-01-29 17:50:00 +00:00
|
|
|
char *vncPassword;
|
2009-03-16 13:54:26 +00:00
|
|
|
char *vncSASLdir;
|
2013-01-10 21:03:14 +00:00
|
|
|
|
|
|
|
bool spiceTLS;
|
2010-03-05 20:31:50 +00:00
|
|
|
char *spiceTLSx509certdir;
|
2012-02-24 14:13:06 +00:00
|
|
|
bool spiceSASL;
|
|
|
|
char *spiceSASLdir;
|
2010-03-05 20:31:50 +00:00
|
|
|
char *spiceListen;
|
|
|
|
char *spicePassword;
|
2013-01-10 21:03:14 +00:00
|
|
|
|
2012-06-18 08:22:07 +00:00
|
|
|
int remotePortMin;
|
|
|
|
int remotePortMax;
|
2008-02-27 04:35:08 +00:00
|
|
|
|
2013-04-30 14:26:43 +00:00
|
|
|
int webSocketPortMin;
|
|
|
|
int webSocketPortMax;
|
|
|
|
|
2013-01-10 21:03:14 +00:00
|
|
|
char *hugetlbfsMount;
|
|
|
|
char *hugepagePath;
|
2013-03-25 14:25:30 +00:00
|
|
|
char *bridgeHelperName;
|
2013-01-10 21:03:14 +00:00
|
|
|
|
|
|
|
bool macFilter;
|
2009-11-03 22:41:23 +00:00
|
|
|
|
2013-01-10 21:03:14 +00:00
|
|
|
bool relaxedACS;
|
|
|
|
bool vncAllowHostAudio;
|
2013-08-17 19:30:47 +00:00
|
|
|
bool nogfxAllowHostAudio;
|
2013-01-10 21:03:14 +00:00
|
|
|
bool clearEmulatorCapabilities;
|
|
|
|
bool allowDiskFormatProbing;
|
|
|
|
bool setProcessName;
|
2010-05-19 20:41:01 +00:00
|
|
|
|
2011-04-05 12:17:28 +00:00
|
|
|
int maxProcesses;
|
2011-12-22 11:22:31 +00:00
|
|
|
int maxFiles;
|
2011-04-05 12:17:28 +00:00
|
|
|
|
2013-01-10 21:03:14 +00:00
|
|
|
int maxQueuedJobs;
|
2009-03-03 12:03:44 +00:00
|
|
|
|
2012-08-15 22:10:38 +00:00
|
|
|
char **securityDriverNames;
|
Add two new security label types
Curently security labels can be of type 'dynamic' or 'static'.
If no security label is given, then 'dynamic' is assumed. The
current code takes advantage of this default, and avoids even
saving <seclabel> elements with type='dynamic' to disk. This
means if you temporarily change security driver, the guests
can all still start.
With the introduction of sVirt to LXC though, there needs to be
a new default of 'none' to allow unconfined LXC containers.
This patch introduces two new security label types
- default: the host configuration decides whether to run the
guest with type 'none' or 'dynamic' at guest start
- none: the guest will run unconfined by security policy
The 'none' label type will obviously be undesirable for some
deployments, so a new qemu.conf option allows a host admin to
mandate confined guests. It is also possible to turn off default
confinement
security_default_confined = 1|0 (default == 1)
security_require_confined = 1|0 (default == 0)
* src/conf/domain_conf.c, src/conf/domain_conf.h: Add new
seclabel types
* src/security/security_manager.c, src/security/security_manager.h:
Set default sec label types
* src/security/security_selinux.c: Handle 'none' seclabel type
* src/qemu/qemu.conf, src/qemu/qemu_conf.c, src/qemu/qemu_conf.h,
src/qemu/libvirtd_qemu.aug: New security config options
* src/qemu/qemu_driver.c: Tell security driver about default
config
2012-01-25 14:12:52 +00:00
|
|
|
bool securityDefaultConfined;
|
|
|
|
bool securityRequireConfined;
|
Compressed save image format for Qemu.
Implement a compressed save image format for qemu. While ideally
we would have the choice between compressed/non-compressed
available to the libvirt API, unfortunately there is no "flags"
parameter to the virDomainSave() API. Therefore, implement this
as a qemu.conf option. gzip, bzip2, and lzma are implemented, and
it should be very easy to implement additional compression
methods.
One open question is if/how we should detect the compression
binaries. One way to do it is to do compile-time setting of the
paths (via configure.in), but that doesn't seem like a great thing
to do. My preferred solution is not to detect at all;
when we go to run the commands that need them, if they
aren't available, or aren't available in one of the standard paths,
then we'll fail. That's also the solution implemented in this patch.
In the future, we'll have a more robust (managed) save/restore API,
at which time we can expose this functionality properly in the API.
V2: get rid of redundant dd command and just use >> to append data.
V3: Add back the missing pieces for the enum and bumping the save version.
V4: Make the compressed field in the save_header an int.
Implement LZMA compression.
Signed-off-by: Chris Lalancette <clalance@redhat.com>
2009-08-07 11:34:05 +00:00
|
|
|
|
|
|
|
char *saveImageFormat;
|
2010-10-28 07:31:46 +00:00
|
|
|
char *dumpImageFormat;
|
2013-10-09 16:05:43 +00:00
|
|
|
char *snapshotImageFormat;
|
2009-08-17 14:05:23 +00:00
|
|
|
|
2010-12-08 06:19:17 +00:00
|
|
|
char *autoDumpPath;
|
2011-07-19 21:54:48 +00:00
|
|
|
bool autoDumpBypassCache;
|
|
|
|
bool autoStartBypassCache;
|
2010-12-08 06:19:17 +00:00
|
|
|
|
2013-01-10 21:03:14 +00:00
|
|
|
char *lockManagerName;
|
|
|
|
|
|
|
|
int keepAliveInterval;
|
|
|
|
unsigned int keepAliveCount;
|
|
|
|
|
|
|
|
int seccompSandbox;
|
2013-10-09 09:32:55 +00:00
|
|
|
|
2014-05-20 06:08:05 +00:00
|
|
|
char *migrateHost;
|
2013-10-09 09:32:55 +00:00
|
|
|
/* The default for -incoming */
|
|
|
|
char *migrationAddress;
|
2013-10-15 13:26:52 +00:00
|
|
|
int migrationPortMin;
|
|
|
|
int migrationPortMax;
|
2014-04-09 13:23:45 +00:00
|
|
|
|
|
|
|
bool logTimestamp;
|
2013-01-10 21:03:14 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/* Main driver state */
|
|
|
|
struct _virQEMUDriver {
|
|
|
|
virMutex lock;
|
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Require lock to get reference on 'config',
|
|
|
|
* then lockless thereafter */
|
2013-01-10 21:03:14 +00:00
|
|
|
virQEMUDriverConfigPtr config;
|
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Immutable pointer, self-locking APIs */
|
2013-01-10 21:03:14 +00:00
|
|
|
virThreadPoolPtr workerPool;
|
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Atomic increment only */
|
2013-01-10 21:03:14 +00:00
|
|
|
int nextvmid;
|
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Atomic inc/dec only */
|
2013-02-19 13:57:46 +00:00
|
|
|
unsigned int nactive;
|
2013-01-10 21:03:14 +00:00
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Immutable pointers. Caller must provide locking */
|
2013-01-10 21:03:14 +00:00
|
|
|
virStateInhibitCallback inhibitCallback;
|
|
|
|
void *inhibitOpaque;
|
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Immutable pointer, self-locking APIs */
|
2013-01-11 16:04:47 +00:00
|
|
|
virDomainObjListPtr domains;
|
2013-01-10 21:03:14 +00:00
|
|
|
|
2013-01-23 12:19:15 +00:00
|
|
|
/* Immutable pointer */
|
2013-01-10 21:03:14 +00:00
|
|
|
char *qemuImgBinary;
|
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Immutable pointer, lockless APIs. Pointless abstraction */
|
2013-01-10 21:03:14 +00:00
|
|
|
ebtablesContext *ebtables;
|
|
|
|
|
2013-02-01 17:04:15 +00:00
|
|
|
/* Require lock to get a reference on the object,
|
|
|
|
* lockless access thereafter
|
|
|
|
*/
|
2013-01-10 21:03:14 +00:00
|
|
|
virCapsPtr caps;
|
|
|
|
|
2013-03-05 15:17:24 +00:00
|
|
|
/* Immutable pointer, Immutable object */
|
2013-03-31 18:03:42 +00:00
|
|
|
virDomainXMLOptionPtr xmlopt;
|
2013-03-05 15:17:24 +00:00
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Immutable pointer, self-locking APIs */
|
2013-02-01 13:48:58 +00:00
|
|
|
virQEMUCapsCachePtr qemuCapsCache;
|
2013-01-10 21:03:14 +00:00
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Immutable pointer, self-locking APIs */
|
2013-11-21 10:43:10 +00:00
|
|
|
virObjectEventStatePtr domainEventState;
|
2013-01-10 21:03:14 +00:00
|
|
|
|
2013-02-06 12:40:41 +00:00
|
|
|
/* Immutable pointer. self-locking APIs */
|
2013-01-10 21:03:14 +00:00
|
|
|
virSecurityManagerPtr securityManager;
|
|
|
|
|
2014-03-05 09:58:54 +00:00
|
|
|
virHostdevManagerPtr hostdevMgr;
|
2010-05-21 13:52:09 +00:00
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Immutable pointer. Unsafe APIs. XXX */
|
2013-05-03 18:07:35 +00:00
|
|
|
virHashTablePtr sharedDevices;
|
2013-01-02 14:37:07 +00:00
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Immutable pointer, self-locking APIs */
|
2013-01-09 15:28:58 +00:00
|
|
|
virPortAllocatorPtr remotePorts;
|
2010-10-29 12:18:29 +00:00
|
|
|
|
2013-04-30 14:26:43 +00:00
|
|
|
/* Immutable pointer, self-locking APIs */
|
|
|
|
virPortAllocatorPtr webSocketPorts;
|
|
|
|
|
2013-10-11 03:27:13 +00:00
|
|
|
/* Immutable pointer, self-locking APIs */
|
|
|
|
virPortAllocatorPtr migrationPorts;
|
|
|
|
|
2013-01-16 13:24:55 +00:00
|
|
|
/* Immutable pointer, lockless APIs*/
|
2010-10-29 12:18:29 +00:00
|
|
|
virSysinfoDefPtr hostsysinfo;
|
2010-10-26 14:04:46 +00:00
|
|
|
|
2013-02-05 17:54:55 +00:00
|
|
|
/* Immutable pointer. lockless access */
|
2010-10-26 14:04:46 +00:00
|
|
|
virLockManagerPluginPtr lockManager;
|
2011-06-23 09:37:57 +00:00
|
|
|
|
2013-02-15 12:05:12 +00:00
|
|
|
/* Immutable pointer, self-clocking APIs */
|
2013-07-15 14:53:13 +00:00
|
|
|
virCloseCallbacksPtr closeCallbacks;
|
2007-06-26 22:13:21 +00:00
|
|
|
};
|
|
|
|
|
2010-04-17 01:49:31 +00:00
|
|
|
typedef struct _qemuDomainCmdlineDef qemuDomainCmdlineDef;
|
|
|
|
typedef qemuDomainCmdlineDef *qemuDomainCmdlineDefPtr;
|
|
|
|
struct _qemuDomainCmdlineDef {
|
2014-03-07 08:33:31 +00:00
|
|
|
size_t num_args;
|
2010-04-17 01:49:31 +00:00
|
|
|
char **args;
|
|
|
|
|
|
|
|
unsigned int num_env;
|
|
|
|
char **env_name;
|
|
|
|
char **env_value;
|
|
|
|
};
|
|
|
|
|
2007-06-26 22:13:21 +00:00
|
|
|
|
|
|
|
|
2013-09-24 15:38:26 +00:00
|
|
|
void qemuDomainCmdlineDefFree(qemuDomainCmdlineDefPtr def);
|
|
|
|
|
2013-01-10 21:03:14 +00:00
|
|
|
virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged);
|
|
|
|
|
|
|
|
int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
|
|
|
|
const char *filename);
|
|
|
|
|
|
|
|
virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr driver);
|
2007-06-26 22:13:21 +00:00
|
|
|
|
2013-02-01 17:04:15 +00:00
|
|
|
virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDriverPtr driver);
|
|
|
|
virCapsPtr virQEMUDriverGetCapabilities(virQEMUDriverPtr driver,
|
|
|
|
bool refresh);
|
|
|
|
|
2011-09-13 13:49:50 +00:00
|
|
|
struct qemuDomainDiskInfo {
|
|
|
|
bool removable;
|
|
|
|
bool locked;
|
|
|
|
bool tray_open;
|
2012-01-19 16:58:58 +00:00
|
|
|
int io_status;
|
2011-09-13 13:49:50 +00:00
|
|
|
};
|
|
|
|
|
2013-05-03 18:07:35 +00:00
|
|
|
typedef struct _qemuSharedDeviceEntry qemuSharedDeviceEntry;
|
|
|
|
typedef qemuSharedDeviceEntry *qemuSharedDeviceEntryPtr;
|
2013-02-20 07:43:55 +00:00
|
|
|
|
2013-05-03 18:07:35 +00:00
|
|
|
bool qemuSharedDeviceEntryDomainExists(qemuSharedDeviceEntryPtr entry,
|
|
|
|
const char *name,
|
|
|
|
int *index)
|
2013-01-02 14:37:07 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
|
|
|
|
2013-05-03 18:07:35 +00:00
|
|
|
char * qemuGetSharedDeviceKey(const char *disk_path)
|
2013-01-02 14:37:07 +00:00
|
|
|
ATTRIBUTE_NONNULL(1);
|
|
|
|
|
2013-05-03 18:07:35 +00:00
|
|
|
void qemuSharedDeviceEntryFree(void *payload, const void *name)
|
2013-02-20 07:43:55 +00:00
|
|
|
ATTRIBUTE_NONNULL(1);
|
|
|
|
|
2013-05-03 18:07:37 +00:00
|
|
|
int qemuAddSharedDevice(virQEMUDriverPtr driver,
|
|
|
|
virDomainDeviceDefPtr dev,
|
|
|
|
const char *name)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
|
|
|
|
|
|
|
|
int qemuRemoveSharedDevice(virQEMUDriverPtr driver,
|
|
|
|
virDomainDeviceDefPtr dev,
|
|
|
|
const char *name)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
|
|
|
|
|
2013-05-03 18:07:42 +00:00
|
|
|
int qemuSetUnprivSGIO(virDomainDeviceDefPtr dev);
|
2013-05-03 18:07:41 +00:00
|
|
|
|
2013-01-14 16:50:08 +00:00
|
|
|
int qemuDriverAllocateID(virQEMUDriverPtr driver);
|
2013-03-11 09:24:29 +00:00
|
|
|
virDomainXMLOptionPtr virQEMUDriverCreateXMLConf(virQEMUDriverPtr driver);
|
|
|
|
|
2013-04-04 19:38:00 +00:00
|
|
|
int qemuTranslateDiskSourcePool(virConnectPtr conn,
|
|
|
|
virDomainDiskDefPtr def);
|
2013-01-14 16:50:08 +00:00
|
|
|
|
2013-11-25 16:26:02 +00:00
|
|
|
int qemuTranslateSnapshotDiskSourcePool(virConnectPtr conn,
|
|
|
|
virDomainSnapshotDiskDefPtr def);
|
|
|
|
|
2007-11-26 11:50:16 +00:00
|
|
|
#endif /* __QEMUD_CONF_H */
|