* host side of the character device */
static char *
qemuBuildChrChardevStr(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
const virDomainDef *def,
case VIR_DOMAIN_CHR_TYPE_UNIX:
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FD_PASS)) {
+ if (qemuSecuritySetSocketLabel(secManager, (virDomainDefPtr)def) < 0)
+ goto cleanup;
int fd = qemuOpenChrChardevUNIXSocket(dev);
+ if (qemuSecurityClearSocketLabel(secManager, (virDomainDefPtr)def) < 0) {
+ VIR_FORCE_CLOSE(fd);
+ goto cleanup;
+ }
if (fd < 0)
goto cleanup;
static int
qemuBuildMonitorCommandLine(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
virDomainDefPtr def,
if (!priv->monConfig)
return 0;
- if (!(chrdev = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(chrdev = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
priv->monConfig, "monitor",
priv->qemuCaps, true,
priv->chardevStdioLogd)))
static int
qemuBuildRNGBackendChrdevStr(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
const virDomainDef *def,
return 0;
case VIR_DOMAIN_RNG_BACKEND_EGD:
- if (!(*chr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(*chr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
rng->source.chardev,
rng->info.alias, qemuCaps, true,
chardevStdioLogd)))
static int
qemuBuildRNGCommandLine(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
const virDomainDef *def,
}
/* possibly add character device for backend */
- if (qemuBuildRNGBackendChrdevStr(logManager, cmd, cfg, def,
+ if (qemuBuildRNGBackendChrdevStr(logManager, secManager, cmd, cfg, def,
rng, qemuCaps, &tmp,
chardevStdioLogd) < 0)
return -1;
static int
qemuBuildVhostuserCommandLine(virQEMUDriverPtr driver,
virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virDomainDefPtr def,
virDomainNetDefPtr net,
switch ((virDomainChrType)net->data.vhostuser->type) {
case VIR_DOMAIN_CHR_TYPE_UNIX:
- if (!(chardev = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(chardev = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
net->data.vhostuser,
net->info.alias, qemuCaps, false,
chardevStdioLogd)))
static int
qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver,
virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virDomainDefPtr def,
virDomainNetDefPtr net,
break;
case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
- ret = qemuBuildVhostuserCommandLine(driver, logManager, cmd, def,
+ ret = qemuBuildVhostuserCommandLine(driver, logManager, secManager, cmd, def,
net, qemuCaps, bootindex,
chardevStdioLogd);
goto cleanup;
static int
qemuBuildNetCommandLine(virQEMUDriverPtr driver,
virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virDomainDefPtr def,
virQEMUCapsPtr qemuCaps,
for (i = 0; i < def->nnets; i++) {
virDomainNetDefPtr net = def->nets[i];
- if (qemuBuildInterfaceCommandLine(driver, logManager, cmd, def, net,
+ if (qemuBuildInterfaceCommandLine(driver, logManager, secManager, cmd, def, net,
qemuCaps, bootNet, vmop,
standalone, nnicindexes,
nicindexes,
static int
qemuBuildSmartcardCommandLine(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
const virDomainDef *def,
return -1;
}
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
smartcard->data.passthru,
smartcard->info.alias,
qemuCaps, true,
static int
qemuBuildShmemCommandLine(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
virDomainDefPtr def,
VIR_FREE(devstr);
if (shmem->server.enabled) {
- devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
&shmem->server.chr,
shmem->info.alias, qemuCaps, true,
chardevStdioLogd);
static int
qemuBuildSerialCommandLine(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
const virDomainDef *def,
if (serial->source->type == VIR_DOMAIN_CHR_TYPE_SPICEPORT && !havespice)
continue;
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
serial->source,
serial->info.alias,
qemuCaps, true,
static int
qemuBuildParallelsCommandLine(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
const virDomainDef *def,
virDomainChrDefPtr parallel = def->parallels[i];
char *devstr;
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
parallel->source,
parallel->info.alias,
qemuCaps, true,
static int
qemuBuildChannelsCommandLine(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
const virDomainDef *def,
switch (channel->targetType) {
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD:
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
channel->source,
channel->info.alias,
qemuCaps, true,
break;
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO:
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
channel->source,
channel->info.alias,
qemuCaps, true,
static int
qemuBuildConsoleCommandLine(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
const virDomainDef *def,
return -1;
}
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
console->source,
console->info.alias,
qemuCaps, true,
return -1;
}
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
console->source,
console->info.alias,
qemuCaps, true,
break;
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO:
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
console->source,
console->info.alias,
qemuCaps, true,
static int
qemuBuildRedirdevCommandLine(virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virCommandPtr cmd,
virQEMUDriverConfigPtr cfg,
const virDomainDef *def,
virDomainRedirdevDefPtr redirdev = def->redirdevs[i];
char *devstr;
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
+ if (!(devstr = qemuBuildChrChardevStr(logManager, secManager,
+ cmd, cfg, def,
redirdev->source,
redirdev->info.alias,
qemuCaps, true,
virCommandPtr
qemuBuildCommandLine(virQEMUDriverPtr driver,
virLogManagerPtr logManager,
+ virSecurityManagerPtr secManager,
virDomainObjPtr vm,
const char *migrateURI,
virDomainSnapshotObjPtr snapshot,
if (qemuBuildSgaCommandLine(cmd, def, qemuCaps) < 0)
goto error;
- if (qemuBuildMonitorCommandLine(logManager, cmd, cfg, def, priv) < 0)
+ if (qemuBuildMonitorCommandLine(logManager, secManager, cmd, cfg, def, priv) < 0)
goto error;
if (qemuBuildClockCommandLine(cmd, def, qemuCaps) < 0)
if (qemuBuildFSDevCommandLine(cmd, def, qemuCaps) < 0)
goto error;
- if (qemuBuildNetCommandLine(driver, logManager, cmd, def,
+ if (qemuBuildNetCommandLine(driver, logManager, secManager, cmd, def,
qemuCaps, vmop, standalone,
nnicindexes, nicindexes, &bootHostdevNet,
chardevStdioLogd) < 0)
goto error;
- if (qemuBuildSmartcardCommandLine(logManager, cmd, cfg, def, qemuCaps,
+ if (qemuBuildSmartcardCommandLine(logManager, secManager, cmd, cfg, def, qemuCaps,
chardevStdioLogd) < 0)
goto error;
- if (qemuBuildSerialCommandLine(logManager, cmd, cfg, def, qemuCaps,
+ if (qemuBuildSerialCommandLine(logManager, secManager, cmd, cfg, def, qemuCaps,
chardevStdioLogd) < 0)
goto error;
- if (qemuBuildParallelsCommandLine(logManager, cmd, cfg, def, qemuCaps,
+ if (qemuBuildParallelsCommandLine(logManager, secManager, cmd, cfg, def, qemuCaps,
chardevStdioLogd) < 0)
goto error;
- if (qemuBuildChannelsCommandLine(logManager, cmd, cfg, def, qemuCaps,
+ if (qemuBuildChannelsCommandLine(logManager, secManager, cmd, cfg, def, qemuCaps,
chardevStdioLogd) < 0)
goto error;
- if (qemuBuildConsoleCommandLine(logManager, cmd, cfg, def, qemuCaps,
+ if (qemuBuildConsoleCommandLine(logManager, secManager, cmd, cfg, def, qemuCaps,
chardevStdioLogd) < 0)
goto error;
if (qemuBuildWatchdogCommandLine(cmd, def, qemuCaps) < 0)
goto error;
- if (qemuBuildRedirdevCommandLine(logManager, cmd, cfg, def, qemuCaps,
+ if (qemuBuildRedirdevCommandLine(logManager, secManager, cmd, cfg, def, qemuCaps,
chardevStdioLogd) < 0)
goto error;
if (qemuBuildMemballoonCommandLine(cmd, def, qemuCaps) < 0)
goto error;
- if (qemuBuildRNGCommandLine(logManager, cmd, cfg, def, qemuCaps,
+ if (qemuBuildRNGCommandLine(logManager, secManager, cmd, cfg, def, qemuCaps,
chardevStdioLogd) < 0)
goto error;
goto error;
for (i = 0; i < def->nshmems; i++) {
- if (qemuBuildShmemCommandLine(logManager, cmd, cfg,
+ if (qemuBuildShmemCommandLine(logManager, secManager, cmd, cfg,
def, def->shmems[i], qemuCaps,
chardevStdioLogd))
goto error;