qemu: move monitor device out of domain_conf common code
* src/conf/domain_conf.h (virDomainChrDeviceType): Drop monitor. * src/conf/domain_conf.c (virDomainChrDevice) (virDomainChrDefParseTargetXML, virDomainChrDefFormat): Drop monitor support. * src/qemu/qemu_command.h (qemuBuildCommandLine): Alter signature. * src/qemu/qemu_monitor.h (qemuMonitorOpen): Likewise. * src/qemu/qemu_domain.h (_qemuDomainObjPrivate): Change type of monConfig. * src/qemu/qemu_domain.c (qemuDomainObjPrivateFree) (qemuDomainObjPrivateXMLFormat, qemuDomainObjPrivateXMLParse): Adjust to type change. * src/qemu/qemu_command.c (qemuBuildCommandLine): Likewise. * src/qemu/qemu_driver.c (qemuPrepareMonitorChr) (qemudStartVMDaemon, qemuDomainXMLToNative, qemuConnectMonitor) (qemudShutdownVMDaemon): Likewise. * src/qemu/qemu_hotplug.c (qemuDomainAttachNetDevice): Likewise. * src/qemu/qemu_monitor.c (qemuMonitorOpen): Likewise. * tests/qemuxml2argvtest.c (testCompareXMLToArgvFiles): Likewise.
This commit is contained in:
parent
98334e7c3a
commit
30b9e608c6
@ -198,7 +198,6 @@ VIR_ENUM_IMPL(virDomainChrConsoleTarget,
|
|||||||
"virtio")
|
"virtio")
|
||||||
|
|
||||||
VIR_ENUM_IMPL(virDomainChrDevice, VIR_DOMAIN_CHR_DEVICE_TYPE_LAST,
|
VIR_ENUM_IMPL(virDomainChrDevice, VIR_DOMAIN_CHR_DEVICE_TYPE_LAST,
|
||||||
"monitor",
|
|
||||||
"parallel",
|
"parallel",
|
||||||
"serial",
|
"serial",
|
||||||
"console",
|
"console",
|
||||||
@ -2746,10 +2745,6 @@ virDomainChrDefParseTargetXML(virCapsPtr caps,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_DEVICE_TYPE_MONITOR:
|
|
||||||
/* Nothing to parse */
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
portStr = virXMLPropString(cur, "port");
|
portStr = virXMLPropString(cur, "port");
|
||||||
if (portStr == NULL) {
|
if (portStr == NULL) {
|
||||||
@ -6514,10 +6509,6 @@ virDomainChrDefFormat(virBufferPtr buf,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_DEVICE_TYPE_MONITOR:
|
|
||||||
/* Nothing to format */
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE:
|
case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE:
|
||||||
virBufferVSprintf(buf,
|
virBufferVSprintf(buf,
|
||||||
" <target type='%s' port='%d'/>\n",
|
" <target type='%s' port='%d'/>\n",
|
||||||
|
@ -344,8 +344,7 @@ struct _virDomainNetDef {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum virDomainChrDeviceType {
|
enum virDomainChrDeviceType {
|
||||||
VIR_DOMAIN_CHR_DEVICE_TYPE_MONITOR = 0,
|
VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL = 0,
|
||||||
VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL,
|
|
||||||
VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL,
|
VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL,
|
||||||
VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE,
|
VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE,
|
||||||
VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL,
|
VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL,
|
||||||
|
@ -2452,7 +2452,7 @@ virCommandPtr
|
|||||||
qemuBuildCommandLine(virConnectPtr conn,
|
qemuBuildCommandLine(virConnectPtr conn,
|
||||||
struct qemud_driver *driver,
|
struct qemud_driver *driver,
|
||||||
virDomainDefPtr def,
|
virDomainDefPtr def,
|
||||||
virDomainChrDefPtr monitor_chr,
|
virDomainChrSourceDefPtr monitor_chr,
|
||||||
bool monitor_json,
|
bool monitor_json,
|
||||||
unsigned long long qemuCmdFlags,
|
unsigned long long qemuCmdFlags,
|
||||||
const char *migrateFrom,
|
const char *migrateFrom,
|
||||||
@ -2734,8 +2734,7 @@ qemuBuildCommandLine(virConnectPtr conn,
|
|||||||
if (qemuCmdFlags & QEMUD_CMD_FLAG_CHARDEV) {
|
if (qemuCmdFlags & QEMUD_CMD_FLAG_CHARDEV) {
|
||||||
|
|
||||||
virCommandAddArg(cmd, "-chardev");
|
virCommandAddArg(cmd, "-chardev");
|
||||||
if (!(chrdev = qemuBuildChrChardevStr(&monitor_chr->source,
|
if (!(chrdev = qemuBuildChrChardevStr(monitor_chr, "monitor")))
|
||||||
monitor_chr->info.alias)))
|
|
||||||
goto error;
|
goto error;
|
||||||
virCommandAddArg(cmd, chrdev);
|
virCommandAddArg(cmd, chrdev);
|
||||||
VIR_FREE(chrdev);
|
VIR_FREE(chrdev);
|
||||||
@ -2749,7 +2748,7 @@ qemuBuildCommandLine(virConnectPtr conn,
|
|||||||
prefix = "control,";
|
prefix = "control,";
|
||||||
|
|
||||||
virCommandAddArg(cmd, "-monitor");
|
virCommandAddArg(cmd, "-monitor");
|
||||||
if (!(chrdev = qemuBuildChrArgStr(&monitor_chr->source, prefix)))
|
if (!(chrdev = qemuBuildChrArgStr(monitor_chr, prefix)))
|
||||||
goto error;
|
goto error;
|
||||||
virCommandAddArg(cmd, chrdev);
|
virCommandAddArg(cmd, chrdev);
|
||||||
VIR_FREE(chrdev);
|
VIR_FREE(chrdev);
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
virCommandPtr qemuBuildCommandLine(virConnectPtr conn,
|
virCommandPtr qemuBuildCommandLine(virConnectPtr conn,
|
||||||
struct qemud_driver *driver,
|
struct qemud_driver *driver,
|
||||||
virDomainDefPtr def,
|
virDomainDefPtr def,
|
||||||
virDomainChrDefPtr monitor_chr,
|
virDomainChrSourceDefPtr monitor_chr,
|
||||||
bool monitor_json,
|
bool monitor_json,
|
||||||
unsigned long long qemuCmdFlags,
|
unsigned long long qemuCmdFlags,
|
||||||
const char *migrateFrom,
|
const char *migrateFrom,
|
||||||
|
@ -56,7 +56,7 @@ static void qemuDomainObjPrivateFree(void *data)
|
|||||||
qemuDomainObjPrivatePtr priv = data;
|
qemuDomainObjPrivatePtr priv = data;
|
||||||
|
|
||||||
qemuDomainPCIAddressSetFree(priv->pciaddrs);
|
qemuDomainPCIAddressSetFree(priv->pciaddrs);
|
||||||
virDomainChrDefFree(priv->monConfig);
|
virDomainChrSourceDefFree(priv->monConfig);
|
||||||
VIR_FREE(priv->vcpupids);
|
VIR_FREE(priv->vcpupids);
|
||||||
|
|
||||||
/* This should never be non-NULL if we get here, but just in case... */
|
/* This should never be non-NULL if we get here, but just in case... */
|
||||||
@ -75,13 +75,13 @@ static int qemuDomainObjPrivateXMLFormat(virBufferPtr buf, void *data)
|
|||||||
|
|
||||||
/* priv->monitor_chr is set only for qemu */
|
/* priv->monitor_chr is set only for qemu */
|
||||||
if (priv->monConfig) {
|
if (priv->monConfig) {
|
||||||
switch (priv->monConfig->source.type) {
|
switch (priv->monConfig->type) {
|
||||||
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
||||||
monitorpath = priv->monConfig->source.data.nix.path;
|
monitorpath = priv->monConfig->data.nix.path;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case VIR_DOMAIN_CHR_TYPE_PTY:
|
case VIR_DOMAIN_CHR_TYPE_PTY:
|
||||||
monitorpath = priv->monConfig->source.data.file.path;
|
monitorpath = priv->monConfig->data.file.path;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ static int qemuDomainObjPrivateXMLFormat(virBufferPtr buf, void *data)
|
|||||||
if (priv->monJSON)
|
if (priv->monJSON)
|
||||||
virBufferAddLit(buf, " json='1'");
|
virBufferAddLit(buf, " json='1'");
|
||||||
virBufferVSprintf(buf, " type='%s'/>\n",
|
virBufferVSprintf(buf, " type='%s'/>\n",
|
||||||
virDomainChrTypeToString(priv->monConfig->source.type));
|
virDomainChrTypeToString(priv->monConfig->type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -118,11 +118,6 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(priv->monConfig->info.alias = strdup("monitor"))) {
|
|
||||||
virReportOOMError();
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(monitorpath =
|
if (!(monitorpath =
|
||||||
virXPathString("string(./monitor[1]/@path)", ctxt))) {
|
virXPathString("string(./monitor[1]/@path)", ctxt))) {
|
||||||
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
@ -132,9 +127,9 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
|
|||||||
|
|
||||||
tmp = virXPathString("string(./monitor[1]/@type)", ctxt);
|
tmp = virXPathString("string(./monitor[1]/@type)", ctxt);
|
||||||
if (tmp)
|
if (tmp)
|
||||||
priv->monConfig->source.type = virDomainChrTypeFromString(tmp);
|
priv->monConfig->type = virDomainChrTypeFromString(tmp);
|
||||||
else
|
else
|
||||||
priv->monConfig->source.type = VIR_DOMAIN_CHR_TYPE_PTY;
|
priv->monConfig->type = VIR_DOMAIN_CHR_TYPE_PTY;
|
||||||
VIR_FREE(tmp);
|
VIR_FREE(tmp);
|
||||||
|
|
||||||
if (virXPathBoolean("count(./monitor[@json = '1']) > 0", ctxt)) {
|
if (virXPathBoolean("count(./monitor[@json = '1']) > 0", ctxt)) {
|
||||||
@ -143,18 +138,18 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
|
|||||||
priv->monJSON = 0;
|
priv->monJSON = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (priv->monConfig->source.type) {
|
switch (priv->monConfig->type) {
|
||||||
case VIR_DOMAIN_CHR_TYPE_PTY:
|
case VIR_DOMAIN_CHR_TYPE_PTY:
|
||||||
priv->monConfig->source.data.file.path = monitorpath;
|
priv->monConfig->data.file.path = monitorpath;
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
||||||
priv->monConfig->source.data.nix.path = monitorpath;
|
priv->monConfig->data.nix.path = monitorpath;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
VIR_FREE(monitorpath);
|
VIR_FREE(monitorpath);
|
||||||
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("unsupported monitor type '%s'"),
|
_("unsupported monitor type '%s'"),
|
||||||
virDomainChrTypeToString(priv->monConfig->source.type));
|
virDomainChrTypeToString(priv->monConfig->type));
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +180,7 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
virDomainChrDefFree(priv->monConfig);
|
virDomainChrSourceDefFree(priv->monConfig);
|
||||||
priv->monConfig = NULL;
|
priv->monConfig = NULL;
|
||||||
VIR_FREE(nodes);
|
VIR_FREE(nodes);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* qemu_domain.h: QEMU domain private state
|
* qemu_domain.h: QEMU domain private state
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2007, 2009-2010 Red Hat, Inc.
|
* Copyright (C) 2006-2011 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@ -65,7 +65,7 @@ struct _qemuDomainObjPrivate {
|
|||||||
unsigned long long jobStart;
|
unsigned long long jobStart;
|
||||||
|
|
||||||
qemuMonitorPtr mon;
|
qemuMonitorPtr mon;
|
||||||
virDomainChrDefPtr monConfig;
|
virDomainChrSourceDefPtr monConfig;
|
||||||
int monJSON;
|
int monJSON;
|
||||||
int monitor_warned;
|
int monitor_warned;
|
||||||
bool gotShutdown;
|
bool gotShutdown;
|
||||||
|
@ -2570,20 +2570,13 @@ static int qemudSecurityHook(void *data) {
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
qemuPrepareMonitorChr(struct qemud_driver *driver,
|
qemuPrepareMonitorChr(struct qemud_driver *driver,
|
||||||
virDomainChrDefPtr monConfig,
|
virDomainChrSourceDefPtr monConfig,
|
||||||
const char *vm)
|
const char *vm)
|
||||||
{
|
{
|
||||||
monConfig->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_MONITOR;
|
monConfig->type = VIR_DOMAIN_CHR_TYPE_UNIX;
|
||||||
|
monConfig->data.nix.listen = true;
|
||||||
|
|
||||||
monConfig->source.type = VIR_DOMAIN_CHR_TYPE_UNIX;
|
if (virAsprintf(&monConfig->data.nix.path, "%s/%s.monitor",
|
||||||
monConfig->source.data.nix.listen = true;
|
|
||||||
|
|
||||||
if (!(monConfig->info.alias = strdup("monitor"))) {
|
|
||||||
virReportOOMError();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virAsprintf(&monConfig->source.data.nix.path, "%s/%s.monitor",
|
|
||||||
driver->libDir, vm) < 0) {
|
driver->libDir, vm) < 0) {
|
||||||
virReportOOMError();
|
virReportOOMError();
|
||||||
return -1;
|
return -1;
|
||||||
@ -3018,9 +3011,9 @@ static void qemudShutdownVMDaemon(struct qemud_driver *driver,
|
|||||||
qemuMonitorClose(priv->mon);
|
qemuMonitorClose(priv->mon);
|
||||||
|
|
||||||
if (priv->monConfig) {
|
if (priv->monConfig) {
|
||||||
if (priv->monConfig->source.type == VIR_DOMAIN_CHR_TYPE_UNIX)
|
if (priv->monConfig->type == VIR_DOMAIN_CHR_TYPE_UNIX)
|
||||||
unlink(priv->monConfig->source.data.nix.path);
|
unlink(priv->monConfig->data.nix.path);
|
||||||
virDomainChrDefFree(priv->monConfig);
|
virDomainChrSourceDefFree(priv->monConfig);
|
||||||
priv->monConfig = NULL;
|
priv->monConfig = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6030,7 +6023,7 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
|
|||||||
unsigned int flags ATTRIBUTE_UNUSED) {
|
unsigned int flags ATTRIBUTE_UNUSED) {
|
||||||
struct qemud_driver *driver = conn->privateData;
|
struct qemud_driver *driver = conn->privateData;
|
||||||
virDomainDefPtr def = NULL;
|
virDomainDefPtr def = NULL;
|
||||||
virDomainChrDef monConfig;
|
virDomainChrSourceDef monConfig;
|
||||||
unsigned long long qemuCmdFlags;
|
unsigned long long qemuCmdFlags;
|
||||||
virCommandPtr cmd = NULL;
|
virCommandPtr cmd = NULL;
|
||||||
char *ret = NULL;
|
char *ret = NULL;
|
||||||
|
@ -567,7 +567,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
|||||||
|
|
||||||
if (net->type == VIR_DOMAIN_NET_TYPE_BRIDGE ||
|
if (net->type == VIR_DOMAIN_NET_TYPE_BRIDGE ||
|
||||||
net->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
|
net->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
|
||||||
if (priv->monConfig->source.type != VIR_DOMAIN_CHR_TYPE_UNIX) {
|
if (priv->monConfig->type != VIR_DOMAIN_CHR_TYPE_UNIX) {
|
||||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("network device type '%s' cannot be attached: "
|
_("network device type '%s' cannot be attached: "
|
||||||
"qemu is not using a unix socket monitor"),
|
"qemu is not using a unix socket monitor"),
|
||||||
@ -578,7 +578,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
|||||||
if ((tapfd = qemuNetworkIfaceConnect(conn, driver, net, qemuCmdFlags)) < 0)
|
if ((tapfd = qemuNetworkIfaceConnect(conn, driver, net, qemuCmdFlags)) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
} else if (net->type == VIR_DOMAIN_NET_TYPE_DIRECT) {
|
} else if (net->type == VIR_DOMAIN_NET_TYPE_DIRECT) {
|
||||||
if (priv->monConfig->source.type != VIR_DOMAIN_CHR_TYPE_UNIX) {
|
if (priv->monConfig->type != VIR_DOMAIN_CHR_TYPE_UNIX) {
|
||||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("network device type '%s' cannot be attached: "
|
_("network device type '%s' cannot be attached: "
|
||||||
"qemu is not using a unix socket monitor"),
|
"qemu is not using a unix socket monitor"),
|
||||||
|
@ -588,7 +588,7 @@ qemuMonitorIO(int watch, int fd, int events, void *opaque) {
|
|||||||
|
|
||||||
qemuMonitorPtr
|
qemuMonitorPtr
|
||||||
qemuMonitorOpen(virDomainObjPtr vm,
|
qemuMonitorOpen(virDomainObjPtr vm,
|
||||||
virDomainChrDefPtr config,
|
virDomainChrSourceDefPtr config,
|
||||||
int json,
|
int json,
|
||||||
qemuMonitorCallbacksPtr cb)
|
qemuMonitorCallbacksPtr cb)
|
||||||
{
|
{
|
||||||
@ -625,20 +625,20 @@ qemuMonitorOpen(virDomainObjPtr vm,
|
|||||||
mon->cb = cb;
|
mon->cb = cb;
|
||||||
qemuMonitorLock(mon);
|
qemuMonitorLock(mon);
|
||||||
|
|
||||||
switch (config->source.type) {
|
switch (config->type) {
|
||||||
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
||||||
mon->hasSendFD = 1;
|
mon->hasSendFD = 1;
|
||||||
mon->fd = qemuMonitorOpenUnix(config->source.data.nix.path);
|
mon->fd = qemuMonitorOpenUnix(config->data.nix.path);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_PTY:
|
case VIR_DOMAIN_CHR_TYPE_PTY:
|
||||||
mon->fd = qemuMonitorOpenPty(config->source.data.file.path);
|
mon->fd = qemuMonitorOpenPty(config->data.file.path);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("unable to handle monitor type: %s"),
|
_("unable to handle monitor type: %s"),
|
||||||
virDomainChrTypeToString(config->source.type));
|
virDomainChrTypeToString(config->type));
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* qemu_monitor.h: interaction with QEMU monitor console
|
* qemu_monitor.h: interaction with QEMU monitor console
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2010 Red Hat, Inc.
|
* Copyright (C) 2006-2011 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@ -119,7 +119,7 @@ char *qemuMonitorEscapeArg(const char *in);
|
|||||||
char *qemuMonitorEscapeShell(const char *in);
|
char *qemuMonitorEscapeShell(const char *in);
|
||||||
|
|
||||||
qemuMonitorPtr qemuMonitorOpen(virDomainObjPtr vm,
|
qemuMonitorPtr qemuMonitorOpen(virDomainObjPtr vm,
|
||||||
virDomainChrDefPtr config,
|
virDomainChrSourceDefPtr config,
|
||||||
int json,
|
int json,
|
||||||
qemuMonitorCallbacksPtr cb);
|
qemuMonitorCallbacksPtr cb);
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ static int testCompareXMLToArgvFiles(const char *xml,
|
|||||||
int ret = -1;
|
int ret = -1;
|
||||||
unsigned long long flags;
|
unsigned long long flags;
|
||||||
virDomainDefPtr vmdef = NULL;
|
virDomainDefPtr vmdef = NULL;
|
||||||
virDomainChrDef monitor_chr;
|
virDomainChrSourceDef monitor_chr;
|
||||||
virConnectPtr conn;
|
virConnectPtr conn;
|
||||||
char *log = NULL;
|
char *log = NULL;
|
||||||
char *emulator = NULL;
|
char *emulator = NULL;
|
||||||
@ -84,10 +84,9 @@ static int testCompareXMLToArgvFiles(const char *xml,
|
|||||||
vmdef->id = -1;
|
vmdef->id = -1;
|
||||||
|
|
||||||
memset(&monitor_chr, 0, sizeof(monitor_chr));
|
memset(&monitor_chr, 0, sizeof(monitor_chr));
|
||||||
monitor_chr.source.type = VIR_DOMAIN_CHR_TYPE_UNIX;
|
monitor_chr.type = VIR_DOMAIN_CHR_TYPE_UNIX;
|
||||||
monitor_chr.source.data.nix.path = (char *)"/tmp/test-monitor";
|
monitor_chr.data.nix.path = (char *)"/tmp/test-monitor";
|
||||||
monitor_chr.source.data.nix.listen = true;
|
monitor_chr.data.nix.listen = true;
|
||||||
monitor_chr.info.alias = (char *)"monitor";
|
|
||||||
|
|
||||||
flags = QEMUD_CMD_FLAG_VNC_COLON |
|
flags = QEMUD_CMD_FLAG_VNC_COLON |
|
||||||
QEMUD_CMD_FLAG_NO_REBOOT |
|
QEMUD_CMD_FLAG_NO_REBOOT |
|
||||||
|
Loading…
x
Reference in New Issue
Block a user