2010-01-13 16:26:55 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2010 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
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* QEMU stacked security driver
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/stat.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
|
|
|
|
#include "qemu_security_stacked.h"
|
|
|
|
|
|
|
|
#include "qemu_conf.h"
|
|
|
|
#include "datatypes.h"
|
|
|
|
#include "virterror_internal.h"
|
|
|
|
#include "util.h"
|
|
|
|
#include "memory.h"
|
|
|
|
#include "logging.h"
|
|
|
|
#include "pci.h"
|
|
|
|
#include "hostusb.h"
|
|
|
|
#include "storage_file.h"
|
|
|
|
|
|
|
|
#define VIR_FROM_THIS VIR_FROM_QEMU
|
|
|
|
|
|
|
|
|
|
|
|
static struct qemud_driver *driver;
|
|
|
|
|
|
|
|
void qemuSecurityStackedSetDriver(struct qemud_driver *newdriver)
|
|
|
|
{
|
|
|
|
driver = newdriver;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-02-09 19:18:21 +00:00
|
|
|
qemuSecurityStackedVerify(virDomainDefPtr def)
|
2010-01-13 16:26:55 +00:00
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainSecurityVerify &&
|
2010-02-09 19:18:21 +00:00
|
|
|
driver->securitySecondaryDriver->domainSecurityVerify(def) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainSecurityVerify &&
|
2010-02-09 19:18:21 +00:00
|
|
|
driver->securityPrimaryDriver->domainSecurityVerify(def) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedGenLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm)
|
2010-01-13 16:26:55 +00:00
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainGenSecurityLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainGenSecurityLabel(driver->securitySecondaryDriver,
|
|
|
|
vm) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainGenSecurityLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainGenSecurityLabel(driver->securityPrimaryDriver,
|
|
|
|
vm) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedReleaseLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm)
|
2010-01-13 16:26:55 +00:00
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainReleaseSecurityLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainReleaseSecurityLabel(driver->securitySecondaryDriver,
|
|
|
|
vm) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainReleaseSecurityLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainReleaseSecurityLabel(driver->securityPrimaryDriver,
|
|
|
|
vm) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedReserveLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm)
|
2010-01-13 16:26:55 +00:00
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainReserveSecurityLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainReserveSecurityLabel(driver->securitySecondaryDriver,
|
|
|
|
vm) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainReserveSecurityLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainReserveSecurityLabel(driver->securityPrimaryDriver,
|
|
|
|
vm) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedSetSecurityImageLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm,
|
2010-01-13 16:26:55 +00:00
|
|
|
virDomainDiskDefPtr disk)
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainSetSecurityImageLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainSetSecurityImageLabel(driver->securitySecondaryDriver,
|
|
|
|
vm, disk) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainSetSecurityImageLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainSetSecurityImageLabel(driver->securityPrimaryDriver,
|
|
|
|
vm, disk) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedRestoreSecurityImageLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm,
|
2010-01-13 16:26:55 +00:00
|
|
|
virDomainDiskDefPtr disk)
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainRestoreSecurityImageLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainRestoreSecurityImageLabel(driver->securitySecondaryDriver,
|
|
|
|
vm, disk) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainRestoreSecurityImageLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainRestoreSecurityImageLabel(driver->securityPrimaryDriver,
|
|
|
|
vm, disk) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedSetSecurityHostdevLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm,
|
2010-01-13 16:26:55 +00:00
|
|
|
virDomainHostdevDefPtr dev)
|
|
|
|
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainSetSecurityHostdevLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainSetSecurityHostdevLabel(driver->securitySecondaryDriver,
|
|
|
|
vm, dev) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainSetSecurityHostdevLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainSetSecurityHostdevLabel(driver->securityPrimaryDriver,
|
|
|
|
vm, dev) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedRestoreSecurityHostdevLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm,
|
2010-01-13 16:26:55 +00:00
|
|
|
virDomainHostdevDefPtr dev)
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainRestoreSecurityHostdevLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainRestoreSecurityHostdevLabel(driver->securitySecondaryDriver,
|
|
|
|
vm, dev) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainRestoreSecurityHostdevLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainRestoreSecurityHostdevLabel(driver->securityPrimaryDriver,
|
|
|
|
vm, dev) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedSetSecurityAllLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm,
|
|
|
|
const char *stdin_path)
|
2010-01-13 16:26:55 +00:00
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainSetSecurityAllLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainSetSecurityAllLabel(driver->securitySecondaryDriver,
|
|
|
|
vm, stdin_path) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainSetSecurityAllLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainSetSecurityAllLabel(driver->securityPrimaryDriver,
|
|
|
|
vm, stdin_path) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedRestoreSecurityAllLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm,
|
Don't reset user/group/security label on shared filesystems during migrate
When QEMU runs with its disk on NFS, and as a non-root user, the
disk is chownd to that non-root user. When migration completes
the last step is shutting down the QEMU on the source host. THis
normally resets user/group/security label. This is bad when the
VM was just migrated because the file is still in use on the dest
host. It is thus neccessary to skip the reset step for any files
found to be on a shared filesystem
* src/libvirt_private.syms: Export virStorageFileIsSharedFS
* src/util/storage_file.c, src/util/storage_file.h: Add a new
method virStorageFileIsSharedFS() to determine if a file is
on a shared filesystem (NFS, GFS, OCFS2, etc)
* src/qemu/qemu_driver.c: Tell security driver not to reset
disk labels on migration completion
* src/qemu/qemu_security_dac.c, src/qemu/qemu_security_stacked.c,
src/security/security_selinux.c, src/security/security_driver.h,
src/security/security_apparmor.c: Add ability to skip disk
restore step for files on shared filesystems.
2010-05-13 15:49:22 +00:00
|
|
|
int migrated)
|
2010-01-13 16:26:55 +00:00
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainRestoreSecurityAllLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainRestoreSecurityAllLabel(driver->securitySecondaryDriver,
|
|
|
|
vm, migrated) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainRestoreSecurityAllLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainRestoreSecurityAllLabel(driver->securityPrimaryDriver,
|
|
|
|
vm, migrated) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedSetSavedStateLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm,
|
2010-01-13 16:26:55 +00:00
|
|
|
const char *savefile)
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainSetSavedStateLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainSetSavedStateLabel(driver->securitySecondaryDriver,
|
|
|
|
vm, savefile) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainSetSavedStateLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainSetSavedStateLabel(driver->securityPrimaryDriver,
|
|
|
|
vm, savefile) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedRestoreSavedStateLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm,
|
2010-01-13 16:26:55 +00:00
|
|
|
const char *savefile)
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainRestoreSavedStateLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securitySecondaryDriver->domainRestoreSavedStateLabel(driver->securitySecondaryDriver,
|
|
|
|
vm, savefile) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainRestoreSavedStateLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainRestoreSavedStateLabel(driver->securityPrimaryDriver,
|
|
|
|
vm, savefile) < 0)
|
2010-01-13 16:26:55 +00:00
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2010-02-09 19:18:21 +00:00
|
|
|
qemuSecurityStackedSetProcessLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
2010-01-13 16:26:55 +00:00
|
|
|
virDomainObjPtr vm)
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainSetSecurityProcessLabel &&
|
2010-02-09 19:18:21 +00:00
|
|
|
driver->securitySecondaryDriver->domainSetSecurityProcessLabel(driver->securitySecondaryDriver,
|
2010-01-13 16:26:55 +00:00
|
|
|
vm) < 0)
|
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainSetSecurityProcessLabel &&
|
2010-02-09 19:18:21 +00:00
|
|
|
driver->securityPrimaryDriver->domainSetSecurityProcessLabel(driver->securityPrimaryDriver,
|
2010-01-13 16:26:55 +00:00
|
|
|
vm) < 0)
|
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2010-06-15 16:44:19 +00:00
|
|
|
qemuSecurityStackedGetProcessLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm,
|
2010-01-13 16:26:55 +00:00
|
|
|
virSecurityLabelPtr seclabel)
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainGetSecurityProcessLabel &&
|
2010-06-15 16:44:19 +00:00
|
|
|
driver->securityPrimaryDriver->domainGetSecurityProcessLabel(driver->securityPrimaryDriver,
|
|
|
|
vm,
|
2010-01-13 16:26:55 +00:00
|
|
|
seclabel) < 0)
|
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
2010-05-27 15:44:47 +00:00
|
|
|
|
|
|
|
static int
|
|
|
|
qemuSecurityStackedSetSocketLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm)
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainSetSecuritySocketLabel &&
|
|
|
|
driver->securityPrimaryDriver->domainSetSecuritySocketLabel(driver->securityPrimaryDriver,
|
|
|
|
vm) < 0)
|
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainSetSecuritySocketLabel &&
|
|
|
|
driver->securitySecondaryDriver->domainSetSecuritySocketLabel(driver->securitySecondaryDriver,
|
|
|
|
vm) < 0)
|
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
qemuSecurityStackedClearSocketLabel(virSecurityDriverPtr drv ATTRIBUTE_UNUSED,
|
|
|
|
virDomainObjPtr vm)
|
|
|
|
{
|
|
|
|
int rc = 0;
|
|
|
|
|
|
|
|
if (driver->securitySecondaryDriver &&
|
|
|
|
driver->securitySecondaryDriver->domainClearSecuritySocketLabel &&
|
|
|
|
driver->securitySecondaryDriver->domainClearSecuritySocketLabel(driver->securitySecondaryDriver,
|
|
|
|
vm) < 0)
|
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
if (driver->securityPrimaryDriver &&
|
|
|
|
driver->securityPrimaryDriver->domainClearSecuritySocketLabel &&
|
|
|
|
driver->securityPrimaryDriver->domainClearSecuritySocketLabel(driver->securityPrimaryDriver,
|
|
|
|
vm) < 0)
|
|
|
|
rc = -1;
|
|
|
|
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-01-13 16:26:55 +00:00
|
|
|
virSecurityDriver qemuStackedSecurityDriver = {
|
|
|
|
.name = "qemuStacked",
|
|
|
|
.domainSecurityVerify = qemuSecurityStackedVerify,
|
|
|
|
|
|
|
|
.domainGenSecurityLabel = qemuSecurityStackedGenLabel,
|
|
|
|
.domainReleaseSecurityLabel = qemuSecurityStackedReleaseLabel,
|
|
|
|
.domainReserveSecurityLabel = qemuSecurityStackedReserveLabel,
|
|
|
|
|
|
|
|
.domainGetSecurityProcessLabel = qemuSecurityStackedGetProcessLabel,
|
|
|
|
.domainSetSecurityProcessLabel = qemuSecurityStackedSetProcessLabel,
|
|
|
|
|
|
|
|
.domainSetSecurityImageLabel = qemuSecurityStackedSetSecurityImageLabel,
|
|
|
|
.domainRestoreSecurityImageLabel = qemuSecurityStackedRestoreSecurityImageLabel,
|
|
|
|
|
|
|
|
.domainSetSecurityAllLabel = qemuSecurityStackedSetSecurityAllLabel,
|
|
|
|
.domainRestoreSecurityAllLabel = qemuSecurityStackedRestoreSecurityAllLabel,
|
|
|
|
|
|
|
|
.domainSetSecurityHostdevLabel = qemuSecurityStackedSetSecurityHostdevLabel,
|
|
|
|
.domainRestoreSecurityHostdevLabel = qemuSecurityStackedRestoreSecurityHostdevLabel,
|
|
|
|
|
|
|
|
.domainSetSavedStateLabel = qemuSecurityStackedSetSavedStateLabel,
|
|
|
|
.domainRestoreSavedStateLabel = qemuSecurityStackedRestoreSavedStateLabel,
|
2010-05-27 15:44:47 +00:00
|
|
|
|
|
|
|
.domainClearSecuritySocketLabel = qemuSecurityStackedClearSocketLabel,
|
|
|
|
.domainSetSecuritySocketLabel = qemuSecurityStackedSetSocketLabel,
|
2010-01-13 16:26:55 +00:00
|
|
|
};
|