提交 e6f11238 编写于 作者: D Daniel P. Berrange

Added full support for serial and parallel devices to Xen drivers

上级 49956f04
Sat Apr 26 10:21:28 EST 2008 Daniel P. Berrange <berrange@redhat.com>
* src/xm_internal.c, src/xml.c, src/xml.h, src/xend_internal.c,
src/xend_internal.h: Added support for serial and parallel
devices
* tests/sexpr2xmltest.c, tests/xml2sexprtest.c, tests/xmconfigtest.c:
added tests for serial and parallel devices
* tests/sexpr2xmldata/*, tests/xml2sexprdata/*, tests/xmconfigdata/*:
updated for new test cases
Fri Apr 25 16:45:28 EST 2008 Daniel P. Berrange <berrange@redhat.com>
* src/internal.c: Convenience macros for fixed arrays
......
......@@ -65,7 +65,7 @@ extern "C" {
#define STRCASEEQLEN(a,b,n) (strncasecmp((a),(b),(n)) == 0)
#define STRNEQLEN(a,b,n) (strncmp((a),(b),(n)) != 0)
#define STRCASENEQLEN(a,b,n) (strncasecmp((a),(b),(n)) != 0)
#define STRPREFIX(a,b) (strncmp((a),(b),strlen((b))) == 0)
#define NUL_TERMINATE(buf) do { (buf)[sizeof(buf)-1] = '\0'; } while (0)
#define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
......
......@@ -1376,6 +1376,244 @@ xend_parse_sexp_desc_os(virConnectPtr xend, struct sexpr *node, virBufferPtr buf
return(0);
}
int
xend_parse_sexp_desc_char(virConnectPtr conn,
virBufferPtr buf,
const char *devtype,
int portNum,
const char *value,
const char *tty)
{
const char *type;
int telnet = 0;
char *bindPort = NULL;
char *bindHost = NULL;
char *connectPort = NULL;
char *connectHost = NULL;
char *path = NULL;
int ret = -1;
if (value[0] == '/') {
type = "dev";
} else if (STRPREFIX(value, "null")) {
type = "null";
value = NULL;
} else if (STRPREFIX(value, "vc")) {
type = "vc";
value = NULL;
} else if (STRPREFIX(value, "pty")) {
type = "pty";
value = NULL;
} else if (STRPREFIX(value, "stdio")) {
type = "stdio";
value = NULL;
} else if (STRPREFIX(value, "file:")) {
type = "file";
value += sizeof("file:")-1;
} else if (STRPREFIX(value, "pipe:")) {
type = "pipe";
value += sizeof("pipe:")-1;
} else if (STRPREFIX(value, "tcp:")) {
type = "tcp";
value += sizeof("tcp:")-1;
} else if (STRPREFIX(value, "telnet:")) {
type = "tcp";
value += sizeof("telnet:")-1;
telnet = 1;
} else if (STRPREFIX(value, "udp:")) {
type = "udp";
value += sizeof("udp:")-1;
} else if (STRPREFIX(value, "unix:")) {
type = "unix";
value += sizeof("unix:")-1;
} else {
virXendError(conn, VIR_ERR_INTERNAL_ERROR,
_("Unknown char device type"));
return -1;
}
/* Compat with legacy <console tty='/dev/pts/5'/> syntax */
if (STREQ(devtype, "console") &&
STREQ(type, "pty") &&
tty != NULL) {
if (virBufferVSprintf(buf, " <%s type='%s' tty='%s'>\n",
devtype, type, tty) < 0)
goto no_memory;
} else {
if (virBufferVSprintf(buf, " <%s type='%s'>\n",
devtype, type) < 0)
goto no_memory;
}
if (STREQ(type, "null") ||
STREQ(type, "vc") ||
STREQ(type, "stdio")) {
/* no source needed */
} else if (STREQ(type, "pty")) {
if (tty &&
virBufferVSprintf(buf, " <source path='%s'/>\n",
tty) < 0)
goto no_memory;
} else if (STREQ(type, "file") ||
STREQ(type, "pipe")) {
if (virBufferVSprintf(buf, " <source path='%s'/>\n",
value) < 0)
goto no_memory;
} else if (STREQ(type, "tcp")) {
const char *offset = strchr(value, ':');
const char *offset2;
const char *mode, *protocol;
if (offset == NULL) {
virXendError(conn, VIR_ERR_INTERNAL_ERROR,
_("malformed char device string"));
goto error;
}
if (offset != value &&
(bindHost = strndup(value, offset - value)) == NULL)
goto no_memory;
offset2 = strchr(offset, ',');
if (offset2 == NULL)
bindPort = strdup(offset+1);
else
bindPort = strndup(offset+1, offset2-(offset+1));
if (bindPort == NULL)
goto no_memory;
if (offset2 && strstr(offset2, ",listen"))
mode = "bind";
else
mode = "connect";
protocol = telnet ? "telnet":"raw";
if (bindHost) {
if (virBufferVSprintf(buf,
" <source mode='%s' host='%s' service='%s'/>\n",
mode, bindHost, bindPort) < 0)
goto no_memory;
} else {
if (virBufferVSprintf(buf,
" <source mode='%s' service='%s'/>\n",
mode, bindPort) < 0)
goto no_memory;
}
if (virBufferVSprintf(buf,
" <protocol type='%s'/>\n",
protocol) < 0)
goto no_memory;
} else if (STREQ(type, "udp")) {
const char *offset = strchr(value, ':');
const char *offset2, *offset3;
if (offset == NULL) {
virXendError(conn, VIR_ERR_INTERNAL_ERROR,
_("malformed char device string"));
goto error;
}
if (offset != value &&
(connectHost = strndup(value, offset - value)) == NULL)
goto no_memory;
offset2 = strchr(offset, '@');
if (offset2 != NULL) {
if ((connectPort = strndup(offset + 1, offset2-(offset+1))) == NULL)
goto no_memory;
offset3 = strchr(offset2, ':');
if (offset3 == NULL) {
virXendError(conn, VIR_ERR_INTERNAL_ERROR,
_("malformed char device string"));
goto error;
}
if (offset3 > (offset2 + 1) &&
(bindHost = strndup(offset2 + 1, offset3 - (offset2+1))) == NULL)
goto no_memory;
if ((bindPort = strdup(offset3 + 1)) == NULL)
goto no_memory;
} else {
if ((connectPort = strdup(offset + 1)) == NULL)
goto no_memory;
}
if (connectPort) {
if (connectHost) {
if (virBufferVSprintf(buf,
" <source mode='connect' host='%s' service='%s'/>\n",
connectHost, connectPort) < 0)
goto no_memory;
} else {
if (virBufferVSprintf(buf,
" <source mode='connect' service='%s'/>\n",
connectPort) < 0)
goto no_memory;
}
}
if (bindPort) {
if (bindHost) {
if (virBufferVSprintf(buf,
" <source mode='bind' host='%s' service='%s'/>\n",
bindHost, bindPort) < 0)
goto no_memory;
} else {
if (virBufferVSprintf(buf,
" <source mode='bind' service='%s'/>\n",
bindPort) < 0)
goto no_memory;
}
}
} else if (STREQ(type, "unix")) {
const char *offset = strchr(value, ',');
int dolisten = 0;
if (offset)
path = strndup(value, (offset - value));
else
path = strdup(value);
if (path == NULL)
goto no_memory;
if (offset != NULL &&
strstr(offset, ",listen") != NULL)
dolisten = 1;
if (virBufferVSprintf(buf, " <source mode='%s' path='%s'/>\n",
dolisten ? "bind" : "connect", path) < 0)
goto no_memory;
}
if (virBufferVSprintf(buf, " <target port='%d'/>\n",
portNum) < 0)
goto no_memory;
if (virBufferVSprintf(buf, " </%s>\n",
devtype) < 0)
goto no_memory;
ret = 0;
if (ret == -1) {
no_memory:
virXendError(conn, VIR_ERR_NO_MEMORY,
_("no memory for char device config"));
}
error:
free(path);
free(bindHost);
free(bindPort);
free(connectHost);
free(connectPort);
return ret;
}
/**
* xend_parse_sexp_desc:
* @conn: the connection associated with the XML
......@@ -1828,10 +2066,33 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root,
}
tty = xenStoreDomainGetConsolePath(conn, domid);
if (tty) {
virBufferVSprintf(&buf, " <console tty='%s'/>\n", tty);
free(tty);
if (hvm) {
tmp = sexpr_node(root, "domain/image/hvm/serial");
if (tmp && STRNEQ(tmp, "none")) {
if (xend_parse_sexp_desc_char(conn, &buf, "serial", 0, tmp, tty) < 0)
goto error;
/* Add back-compat <console/> tag for primary console */
if (xend_parse_sexp_desc_char(conn, &buf, "console", 0, tmp, tty) < 0)
goto error;
}
tmp = sexpr_node(root, "domain/image/hvm/parallel");
if (tmp && STRNEQ(tmp, "none")) {
/* XXX does XenD stuff parallel port tty info into xenstore somewhere ? */
if (xend_parse_sexp_desc_char(conn, &buf, "parallel", 0, tmp, NULL) < 0)
goto error;
}
} else {
/* Paravirt always has a console */
if (tty) {
virBufferVSprintf(&buf, " <console type='pty' tty='%s'>\n", tty);
virBufferVSprintf(&buf, " <source path='%s'/>\n", tty);
} else {
virBufferAddLit(&buf, " <console type='pty'>\n");
}
virBufferAddLit(&buf, " <target port='0'/>\n");
virBufferAddLit(&buf, " </console>\n");
}
free(tty);
virBufferAddLit(&buf, " </devices>\n");
virBufferAddLit(&buf, "</domain>\n");
......
......@@ -20,12 +20,12 @@
#include "libvirt/libvirt.h"
#include "capabilities.h"
#include "buf.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* \brief Setup the connection to a xend instance via TCP
* \param host The host name to connect to
......@@ -180,6 +180,13 @@ char *xenDaemonDomainDumpXMLByName(virConnectPtr xend,
*/
int xend_log(virConnectPtr xend, char *buffer, size_t n_buffer);
int xend_parse_sexp_desc_char(virConnectPtr conn,
virBufferPtr buf,
const char *devtype,
int portNum,
const char *value,
const char *tty);
char *xend_parse_domain_sexp(virConnectPtr conn, char *root, int xendConfigVersion);
/* refactored ones */
......
......@@ -1025,11 +1025,22 @@ char *xenXMDomainFormatXML(virConnectPtr conn, virConfPtr conf) {
}
if (hvm) {
if (xenXMConfigGetString(conf, "serial", &str) == 0 && !strcmp(str, "pty")) {
virBufferAddLit(buf, " <console/>\n");
if (xenXMConfigGetString(conf, "parallel", &str) == 0) {
if (STRNEQ(str, "none"))
xend_parse_sexp_desc_char(conn, buf, "parallel", 0, str, NULL);
}
} else { /* Paravirt implicitly always has a console */
virBufferAddLit(buf, " <console/>\n");
if (xenXMConfigGetString(conf, "serial", &str) == 0) {
if (STRNEQ(str, "none")) {
xend_parse_sexp_desc_char(conn, buf, "serial", 0, str, NULL);
/* Add back-compat console tag for primary console */
xend_parse_sexp_desc_char(conn, buf, "console", 0, str, NULL);
}
}
} else {
/* Paravirt implicitly always has a single console */
virBufferAddLit(buf, " <console type='pty'>\n");
virBufferAddLit(buf, " <target port='0'/>\n");
virBufferAddLit(buf, " </console>\n");
}
virBufferAddLit(buf, " </devices>\n");
......@@ -2267,14 +2278,38 @@ virConfPtr xenXMParseXMLToConfig(virConnectPtr conn, const char *xml) {
obj = NULL;
if (hvm) {
obj = xmlXPathEval(BAD_CAST "count(/domain/devices/console) > 0", ctxt);
if ((obj != NULL) && (obj->type == XPATH_BOOLEAN) &&
(obj->boolval)) {
if (xenXMConfigSetString(conf, "serial", "pty") < 0)
xmlNodePtr cur;
cur = virXPathNode("/domain/devices/parallel[1]", ctxt);
if (cur != NULL) {
char scratch[PATH_MAX];
if (virDomainParseXMLOSDescHVMChar(conn, scratch, sizeof(scratch), cur) < 0) {
goto error;
}
if (xenXMConfigSetString(conf, "parallel", scratch) < 0)
goto error;
} else {
if (xenXMConfigSetString(conf, "parallel", "none") < 0)
goto error;
}
xmlXPathFreeObject(obj);
obj = NULL;
cur = virXPathNode("/domain/devices/serial[1]", ctxt);
if (cur != NULL) {
char scratch[PATH_MAX];
if (virDomainParseXMLOSDescHVMChar(conn, scratch, sizeof(scratch), cur) < 0)
goto error;
if (xenXMConfigSetString(conf, "serial", scratch) < 0)
goto error;
} else {
if (virXPathBoolean("count(/domain/devices/console) > 0", ctxt)) {
if (xenXMConfigSetString(conf, "serial", "pty") < 0)
goto error;
} else {
if (xenXMConfigSetString(conf, "serial", "none") < 0)
goto error;
}
}
}
xmlFreeDoc(doc);
......
......@@ -673,6 +673,178 @@ virDomainParseXMLGraphicsDescVFB(virConnectPtr conn ATTRIBUTE_UNUSED,
}
int
virDomainParseXMLOSDescHVMChar(virConnectPtr conn,
char *buf,
size_t buflen,
xmlNodePtr node)
{
xmlChar *type = NULL;
xmlChar *path = NULL;
xmlChar *bindHost = NULL;
xmlChar *bindService = NULL;
xmlChar *connectHost = NULL;
xmlChar *connectService = NULL;
xmlChar *mode = NULL;
xmlChar *protocol = NULL;
xmlNodePtr cur;
type = xmlGetProp(node, BAD_CAST "type");
if (type != NULL) {
cur = node->children;
while (cur != NULL) {
if (cur->type == XML_ELEMENT_NODE) {
if (xmlStrEqual(cur->name, BAD_CAST "source")) {
if (mode == NULL)
mode = xmlGetProp(cur, BAD_CAST "mode");
if (STREQ((const char *)type, "dev") ||
STREQ((const char *)type, "file") ||
STREQ((const char *)type, "pipe") ||
STREQ((const char *)type, "unix")) {
if (path == NULL)
path = xmlGetProp(cur, BAD_CAST "path");
} else if (STREQ((const char *)type, "udp") ||
STREQ((const char *)type, "tcp")) {
if (mode == NULL ||
STREQ((const char *)mode, "connect")) {
if (connectHost == NULL)
connectHost = xmlGetProp(cur, BAD_CAST "host");
if (connectService == NULL)
connectService = xmlGetProp(cur, BAD_CAST "service");
} else {
if (bindHost == NULL)
bindHost = xmlGetProp(cur, BAD_CAST "host");
if (bindService == NULL)
bindService = xmlGetProp(cur, BAD_CAST "service");
}
if (STREQ((const char*)type, "udp")) {
xmlFree(mode);
mode = NULL;
}
}
} else if (xmlStrEqual(cur->name, BAD_CAST "protocol")) {
if (protocol == NULL)
protocol = xmlGetProp(cur, BAD_CAST "type");
}
}
cur = cur->next;
}
}
if (type == NULL ||
STREQ((const char *)type, "pty")) {
strncpy(buf, "pty", buflen);
} else if (STREQ((const char *)type, "null") ||
STREQ((const char *)type, "stdio") ||
STREQ((const char *)type, "vc")) {
snprintf(buf, buflen, "%s", type);
} else if (STREQ((const char *)type, "file") ||
STREQ((const char *)type, "dev") ||
STREQ((const char *)type, "pipe")) {
if (path == NULL) {
virXMLError(conn, VIR_ERR_XML_ERROR,
_("Missing source path attribute for char device"), 0);
goto cleanup;
}
if (STREQ((const char *)type, "dev"))
strncpy(buf, (const char *)path, buflen);
else
snprintf(buf, buflen, "%s:%s", type, path);
} else if (STREQ((const char *)type, "tcp")) {
int telnet = 0;
if (protocol != NULL &&
STREQ((const char *)protocol, "telnet"))
telnet = 1;
if (mode == NULL ||
STREQ((const char *)mode, "connect")) {
if (connectHost == NULL) {
virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
_("Missing source host attribute for char device"), 0);
goto cleanup;
}
if (connectService == NULL) {
virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
_("Missing source service attribute for char device"), 0);
goto cleanup;
}
snprintf(buf, buflen, "%s:%s:%s",
(telnet ? "telnet" : "tcp"),
connectHost, connectService);
} else {
if (bindHost == NULL) {
virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
_("Missing source host attribute for char device"), 0);
goto cleanup;
}
if (bindService == NULL) {
virXMLError(conn, VIR_ERR_INTERNAL_ERROR,
_("Missing source service attribute for char device"), 0);
goto cleanup;
}
snprintf(buf, buflen, "%s:%s:%s,listen",
(telnet ? "telnet" : "tcp"),
bindHost, bindService);
}
} else if (STREQ((const char *)type, "udp")) {
if (connectService == NULL) {
virXMLError(conn, VIR_ERR_XML_ERROR,
_("Missing source service attribute for char device"), 0);
goto cleanup;
}
snprintf(buf, buflen, "udp:%s:%s@%s:%s",
connectHost ? (const char *)connectHost : "",
connectService,
bindHost ? (const char *)bindHost : "",
bindService ? (const char *)bindService : "");
} else if (STREQ((const char *)type, "unix")) {
if (path == NULL) {
virXMLError(conn, VIR_ERR_XML_ERROR,
_("Missing source path attribute for char device"), 0);
goto cleanup;
}
if (mode == NULL ||
STREQ((const char *)mode, "connect")) {
snprintf(buf, buflen, "%s:%s", type, path);
} else {
snprintf(buf, buflen, "%s:%s,listen", type, path);
}
}
buf[buflen-1] = '\0';
xmlFree(mode);
xmlFree(protocol);
xmlFree(type);
xmlFree(bindHost);
xmlFree(bindService);
xmlFree(connectHost);
xmlFree(connectService);
xmlFree(path);
return 0;
cleanup:
xmlFree(mode);
xmlFree(protocol);
xmlFree(type);
xmlFree(bindHost);
xmlFree(bindService);
xmlFree(connectHost);
xmlFree(connectService);
xmlFree(path);
return -1;
}
/**
* virDomainParseXMLOSDescHVM:
* @conn: pointer to the hypervisor connection
......@@ -877,24 +1049,53 @@ virDomainParseXMLOSDescHVM(virConnectPtr conn, xmlNodePtr node,
nodes = NULL;
}
res = virXPathBoolean("count(domain/devices/console) > 0", ctxt);
if (res < 0) {
virXMLError(conn, VIR_ERR_XML_ERROR, NULL, 0);
goto error;
cur = virXPathNode("/domain/devices/parallel[1]", ctxt);
if (cur != NULL) {
char scratch[PATH_MAX];
if (virDomainParseXMLOSDescHVMChar(conn, scratch, sizeof(scratch), cur) < 0)
goto error;
if (virBufferVSprintf(buf, "(parallel %s)", scratch) < 0)
goto no_memory;
} else {
if (virBufferAddLit(buf, "(parallel none)") < 0)
goto no_memory;
}
if (res) {
virBufferAddLit(buf, "(serial pty)");
cur = virXPathNode("/domain/devices/serial[1]", ctxt);
if (cur != NULL) {
char scratch[PATH_MAX];
if (virDomainParseXMLOSDescHVMChar(conn, scratch, sizeof(scratch), cur) < 0)
goto error;
if (virBufferVSprintf(buf, "(serial %s)", scratch) < 0)
goto no_memory;
} else {
res = virXPathBoolean("count(domain/devices/console) > 0", ctxt);
if (res < 0) {
virXMLError(conn, VIR_ERR_XML_ERROR, NULL, 0);
goto error;
}
if (res) {
if (virBufferAddLit(buf, "(serial pty)") < 0)
goto no_memory;
} else {
if (virBufferAddLit(buf, "(serial none)") < 0)
goto no_memory;
}
}
str = virXPathString("string(/domain/clock/@offset)", ctxt);
if (str != NULL && !strcmp(str, "localtime")) {
virBufferAddLit(buf, "(localtime 1)");
if (virBufferAddLit(buf, "(localtime 1)") < 0)
goto no_memory;
}
free(str);
return (0);
no_memory:
virXMLError(conn, VIR_ERR_XML_ERROR,
_("cannot allocate memory for buffer"), 0);
error:
free(nodes);
return (-1);
......
......@@ -44,6 +44,10 @@ char * virSaveCpuSet (virConnectPtr conn,
char * virConvertCpuSet(virConnectPtr conn,
const char *str,
int maxcpu);
int virDomainParseXMLOSDescHVMChar(virConnectPtr conn,
char *buf,
size_t buflen,
xmlNodePtr node);
char * virDomainParseXMLDesc(virConnectPtr conn,
const char *xmldesc,
char **name,
......
......@@ -28,5 +28,8 @@
</disk>
<input type='mouse' bus='xen'/>
<graphics type='vnc' port='5905'/>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -21,5 +21,8 @@
<mac address='00:16:3e:23:9e:eb'/>
<script path='vif-bridge'/>
</interface>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -18,5 +18,8 @@
<source dev='/dev/MainVG/GuestVG'/>
<target dev='xvda'/>
</disk>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -18,5 +18,8 @@
<source file='/root/some.img'/>
<target dev='xvda'/>
</disk>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -18,5 +18,8 @@
<source file='/root/some.img'/>
<target dev='xvda'/>
</disk>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -18,5 +18,8 @@
<source file='/root/some.img'/>
<target dev='xvda'/>
</disk>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -22,5 +22,11 @@
<source file='/root/some.img'/>
<target dev='xvda'/>
</disk>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel tcp:localhost:9999)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<parallel type='tcp'>
<source mode='connect' host='localhost' service='9999'/>
<protocol type='raw'/>
<target port='0'/>
</parallel>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial file:/tmp/serial.log)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<serial type='file'>
<source path='/tmp/serial.log'/>
<target port='0'/>
</serial>
<console type='file'>
<source path='/tmp/serial.log'/>
<target port='0'/>
</console>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial null)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<serial type='null'>
<target port='0'/>
</serial>
<console type='null'>
<target port='0'/>
</console>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial pipe:/tmp/serial.pipe)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<serial type='pipe'>
<source path='/tmp/serial.pipe'/>
<target port='0'/>
</serial>
<console type='pipe'>
<source path='/tmp/serial.pipe'/>
<target port='0'/>
</console>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial pty)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial stdio)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<serial type='stdio'>
<target port='0'/>
</serial>
<console type='stdio'>
<target port='0'/>
</console>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial telnet:localhost:9999,listen)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<serial type='tcp'>
<source mode='bind' host='localhost' service='9999'/>
<protocol type='telnet'/>
<target port='0'/>
</serial>
<console type='tcp'>
<source mode='bind' host='localhost' service='9999'/>
<protocol type='telnet'/>
<target port='0'/>
</console>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial tcp:localhost:9999,listen)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<serial type='tcp'>
<source mode='bind' host='localhost' service='9999'/>
<protocol type='raw'/>
<target port='0'/>
</serial>
<console type='tcp'>
<source mode='bind' host='localhost' service='9999'/>
<protocol type='raw'/>
<target port='0'/>
</console>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial udp:localhost:9998@localhost:9999)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<serial type='udp'>
<source mode='connect' host='localhost' service='9998'/>
<source mode='bind' host='localhost' service='9999'/>
<target port='0'/>
</serial>
<console type='udp'>
<source mode='connect' host='localhost' service='9998'/>
<source mode='bind' host='localhost' service='9999'/>
<target port='0'/>
</console>
</devices>
</domain>
(domain (domid 1)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial unix:/tmp/serial.sock,listen)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen' id='1'>
<name>fvtest</name>
<uuid>b5d70dd2-75cd-aca5-1776-9660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<driver name='file'/>
<source file='/root/foo.img'/>
<target dev='hda'/>
</disk>
<interface type='bridge'>
<source bridge='xenbr0'/>
<target dev='vif1.0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901'/>
<serial type='unix'>
<source mode='bind' path='/tmp/serial.sock'/>
<target port='0'/>
</serial>
<console type='unix'>
<source mode='bind' path='/tmp/serial.sock'/>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -24,5 +24,8 @@
<mac address='00:11:22:33:44:55'/>
<script path='vif-bridge'/>
</interface>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -24,5 +24,8 @@
<ip address='172.14.5.6'/>
<script path='vif-routed'/>
</interface>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -36,5 +36,11 @@
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5906'/>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -14,5 +14,8 @@
<source file='/root/some.img'/>
<target dev='xvda'/>
</disk>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -20,5 +20,8 @@
</disk>
<input type='mouse' bus='xen'/>
<graphics type='vnc' port='-1' listen='0.0.0.0' keymap='ja'/>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -20,5 +20,8 @@
</disk>
<input type='mouse' bus='xen'/>
<graphics type='vnc' port='-1' listen='0.0.0.0' keymap='ja'/>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -18,5 +18,8 @@
<source file='/root/some.img'/>
<target dev='xvda'/>
</disk>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -2,6 +2,7 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#ifdef WITH_XEN
......@@ -11,11 +12,11 @@
#include "testutils.h"
static char *progname;
static char *abs_top_srcdir;
static char *abs_srcdir;
#define MAX_FILE 4096
static int testCompareFiles(const char *xml_rel, const char *sexpr_rel,
static int testCompareFiles(const char *xml, const char *sexpr,
int xendConfigVersion) {
char xmlData[MAX_FILE];
char sexprData[MAX_FILE];
......@@ -23,28 +24,23 @@ static int testCompareFiles(const char *xml_rel, const char *sexpr_rel,
char *xmlPtr = &(xmlData[0]);
char *sexprPtr = &(sexprData[0]);
int ret = -1;
char xml[PATH_MAX];
char sexpr[PATH_MAX];
snprintf(xml, sizeof xml - 1, "%s/tests/%s", abs_top_srcdir, xml_rel);
snprintf(sexpr, sizeof sexpr - 1, "%s/tests/%s", abs_top_srcdir, sexpr_rel);
if (virtTestLoadFile(xml, &xmlPtr, MAX_FILE) < 0)
goto fail;
if (virtTestLoadFile(xml, &xmlPtr, MAX_FILE) < 0) {
printf("Missing %s\n", xml);
goto fail;
}
if (virtTestLoadFile(sexpr, &sexprPtr, MAX_FILE) < 0)
goto fail;
if (virtTestLoadFile(sexpr, &sexprPtr, MAX_FILE) < 0) {
printf("Missing %s\n", sexpr);
goto fail;
}
if (!(gotxml = xend_parse_domain_sexp(NULL, sexprData, xendConfigVersion)))
goto fail;
if (strcmp(xmlData, gotxml)) {
if (getenv("DEBUG_TESTS")) {
printf("In test file %s -> %s:\n", sexpr, xml);
printf("Expect %d '%s'\n", (int)strlen(xmlData), xmlData);
printf("Actual %d '%s'\n", (int)strlen(gotxml), gotxml);
}
goto fail;
if (STRNEQ(xmlData, gotxml)) {
virtTestDifference(stderr, xmlData, gotxml);
goto fail;
}
ret = 0;
......@@ -55,139 +51,21 @@ static int testCompareFiles(const char *xml_rel, const char *sexpr_rel,
return ret;
}
static int testComparePVversion1(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-pv.xml",
"sexpr2xmldata/sexpr2xml-pv.sexpr",
1);
}
static int testCompareFVversion1(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-fv.xml",
"sexpr2xmldata/sexpr2xml-fv.sexpr",
1);
}
static int testComparePVversion2(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-pv.xml",
"sexpr2xmldata/sexpr2xml-pv.sexpr",
2);
}
static int testComparePVOrigVFB(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml",
"sexpr2xmldata/sexpr2xml-pv-vfb-orig.sexpr",
2);
}
static int testComparePVNewVFB(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-pv-vfb-new.xml",
"sexpr2xmldata/sexpr2xml-pv-vfb-new.sexpr",
3);
}
static int testCompareFVversion2(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-v2.xml",
"sexpr2xmldata/sexpr2xml-fv-v2.sexpr",
2);
}
static int testComparePVBootloader(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-pv-bootloader.xml",
"sexpr2xmldata/sexpr2xml-pv-bootloader.sexpr",
2);
}
static int testCompareDiskFile(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-disk-file.xml",
"sexpr2xmldata/sexpr2xml-disk-file.sexpr",
1);
}
static int testCompareDiskBlock(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-disk-block.xml",
"sexpr2xmldata/sexpr2xml-disk-block.sexpr",
1);
}
static int testCompareDiskShareable(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-disk-block-shareable.xml",
"sexpr2xmldata/sexpr2xml-disk-block-shareable.sexpr",
1);
}
static int testCompareDiskDrvBlktapQcow(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-disk-drv-blktap-qcow.xml",
"sexpr2xmldata/sexpr2xml-disk-drv-blktap-qcow.sexpr",
1);
}
static int testCompareDiskDrvBlktapRaw(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml",
"sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.sexpr",
1);
}
static int testCompareResizedMemory(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-curmem.xml",
"sexpr2xmldata/sexpr2xml-curmem.sexpr",
1);
}
static int testCompareNetRouted(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-net-routed.xml",
"sexpr2xmldata/sexpr2xml-net-routed.sexpr",
1);
}
static int testCompareNetBridged(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-net-bridged.xml",
"sexpr2xmldata/sexpr2xml-net-bridged.sexpr",
1);
}
static int testCompareNoSourceCDRom(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-no-source-cdrom.xml",
"sexpr2xmldata/sexpr2xml-no-source-cdrom.sexpr",
1);
}
static int testCompareFVInputUSBMouse(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-usbmouse.xml",
"sexpr2xmldata/sexpr2xml-fv-usbmouse.sexpr",
1);
}
struct testInfo {
const char *input;
const char *output;
int version;
};
static int testCompareFVInputUSBTablet(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-usbtablet.xml",
"sexpr2xmldata/sexpr2xml-fv-usbtablet.sexpr",
1);
}
static int testCompareFVclockUTC(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-utc.xml",
"sexpr2xmldata/sexpr2xml-fv-utc.sexpr",
1);
}
static int testCompareFVclockLocaltime(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-localtime.xml",
"sexpr2xmldata/sexpr2xml-fv-localtime.sexpr",
1);
}
static int testCompareFVKernel(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-kernel.xml",
"sexpr2xmldata/sexpr2xml-fv-kernel.sexpr",
1);
}
static int testCompareFVLegacyVFB(const void *data ATTRIBUTE_UNUSED) {
return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-legacy-vfb.xml",
"sexpr2xmldata/sexpr2xml-fv-legacy-vfb.sexpr",
4);
static int testCompareHelper(const void *data) {
const struct testInfo *info = data;
char xml[PATH_MAX];
char args[PATH_MAX];
snprintf(xml, PATH_MAX, "%s/sexpr2xmldata/sexpr2xml-%s.xml",
abs_srcdir, info->input);
snprintf(args, PATH_MAX, "%s/sexpr2xmldata/sexpr2xml-%s.sexpr",
abs_srcdir, info->output);
return testCompareFiles(xml, args, info->version);
}
......@@ -195,6 +73,7 @@ int
main(int argc, char **argv)
{
int ret = 0;
char cwd[PATH_MAX];
progname = argv[0];
......@@ -203,98 +82,58 @@ main(int argc, char **argv)
exit(EXIT_FAILURE);
}
abs_top_srcdir = getenv("abs_top_srcdir");
if (!abs_top_srcdir) {
fprintf(stderr, "missing enviroment variable abs_top_srcdir\n");
abs_srcdir = getenv("abs_srcdir");
if (!abs_srcdir)
abs_srcdir = getcwd(cwd, sizeof(cwd));
if (argc > 1) {
fprintf(stderr, "Usage: %s\n", progname);
exit(EXIT_FAILURE);
}
if (virtTestRun("SEXPR-2-XML PV config (version 1)",
1, testComparePVversion1, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML FV config (version 1)",
1, testCompareFVversion1, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML PV config (version 2)",
1, testComparePVversion2, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML PV config (Orig VFB)",
1, testComparePVOrigVFB, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML PV config (New VFB)",
1, testComparePVNewVFB, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML FV config (version 2)",
1, testCompareFVversion2, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML PV config bootloader",
1, testComparePVBootloader, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML Disk File config",
1, testCompareDiskFile, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML Disk Block config",
1, testCompareDiskBlock, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML Disk Block shareable",
1, testCompareDiskShareable, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML Disk Driver blktap qcow config",
1, testCompareDiskDrvBlktapQcow, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML Disk Driver blktap raw config",
1, testCompareDiskDrvBlktapRaw, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML Resized memory config",
1, testCompareResizedMemory, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML net routed",
1, testCompareNetRouted, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML net bridged",
1, testCompareNetBridged, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML no source CDRom",
1, testCompareNoSourceCDRom, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML USB Mouse",
1, testCompareFVInputUSBMouse, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML USB Tablet",
1, testCompareFVInputUSBTablet, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML clock UTC",
1, testCompareFVclockUTC, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML clock Localtime",
1, testCompareFVclockLocaltime, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML FV kernel",
1, testCompareFVKernel, NULL) != 0)
ret = -1;
if (virtTestRun("SEXPR-2-XML FV legacy VFB",
1, testCompareFVLegacyVFB, NULL) != 0)
ret = -1;
#define DO_TEST(in, out, version) \
do { \
struct testInfo info = { in, out, version }; \
if (virtTestRun("Xen SEXPR-2-XML " in " -> " out, \
1, testCompareHelper, &info) < 0) \
ret = -1; \
} while (0)
DO_TEST("pv", "pv", 1);
DO_TEST("fv", "fv", 1);
DO_TEST("pv", "pv", 2);
DO_TEST("fv-v2", "fv-v2", 2);
DO_TEST("pv-vfb-orig", "pv-vfb-orig", 2);
DO_TEST("pv-vfb-new", "pv-vfb-new", 3);
DO_TEST("pv-bootloader", "pv-bootloader", 1);
DO_TEST("disk-file", "disk-file", 2);
DO_TEST("disk-block", "disk-block", 2);
DO_TEST("disk-block-shareable", "disk-block-shareable", 2);
DO_TEST("disk-drv-blktap-raw", "disk-drv-blktap-raw", 2);
DO_TEST("disk-drv-blktap-qcow", "disk-drv-blktap-qcow", 2);
DO_TEST("curmem", "curmem", 1);
DO_TEST("net-routed", "net-routed", 2);
DO_TEST("net-bridged", "net-bridged", 2);
DO_TEST("no-source-cdrom", "no-source-cdrom", 1);
DO_TEST("fv-utc", "fv-utc", 1);
DO_TEST("fv-localtime", "fv-localtime", 1);
DO_TEST("fv-usbmouse", "fv-usbmouse", 1);
DO_TEST("fv-usbmouse", "fv-usbmouse", 1);
DO_TEST("fv-kernel", "fv-kernel", 1);
DO_TEST("fv-serial-null", "fv-serial-null", 1);
DO_TEST("fv-serial-file", "fv-serial-file", 1);
DO_TEST("fv-serial-stdio", "fv-serial-stdio", 1);
DO_TEST("fv-serial-pty", "fv-serial-pty", 1);
DO_TEST("fv-serial-pipe", "fv-serial-pipe", 1);
DO_TEST("fv-serial-tcp", "fv-serial-tcp", 1);
DO_TEST("fv-serial-udp", "fv-serial-udp", 1);
DO_TEST("fv-serial-tcp-telnet", "fv-serial-tcp-telnet", 1);
DO_TEST("fv-serial-unix", "fv-serial-unix", 1);
DO_TEST("fv-parallel-tcp", "fv-parallel-tcp", 1);
exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
}
......
......@@ -21,3 +21,5 @@ vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "none"
......@@ -21,3 +21,5 @@ vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "none"
......@@ -22,3 +22,5 @@ vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,ioemu:hda,w" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr0,type=ioemu" ]
parallel = "none"
serial = "none"
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "tcp:127.0.0.1:7777"
serial = "none"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<parallel type='tcp'>
<source mode='connect' host='127.0.0.1' service='7777'/>
<protocol type='raw'/>
<target port='0'/>
</parallel>
</devices>
</domain>
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "file:/tmp/serial.log"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<serial type='file'>
<source path='/tmp/serial.log'/>
<target port='0'/>
</serial>
<console type='file'>
<source path='/tmp/serial.log'/>
<target port='0'/>
</console>
</devices>
</domain>
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "null"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<serial type='null'>
<target port='0'/>
</serial>
<console type='null'>
<target port='0'/>
</console>
</devices>
</domain>
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "pipe:/tmp/serial.pipe"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<serial type='pipe'>
<source path='/tmp/serial.pipe'/>
<target port='0'/>
</serial>
<console type='pipe'>
<source path='/tmp/serial.pipe'/>
<target port='0'/>
</console>
</devices>
</domain>
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "pty"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "stdio"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<serial type='stdio'>
<target port='0'/>
</serial>
<console type='stdio'>
<target port='0'/>
</console>
</devices>
</domain>
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "telnet:127.0.0.1:9999,listen"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<serial type='tcp'>
<source mode='bind' host='127.0.0.1' service='9999'/>
<protocol type='telnet'/>
<target port='0'/>
</serial>
<console type='tcp'>
<source mode='bind' host='127.0.0.1' service='9999'/>
<protocol type='telnet'/>
<target port='0'/>
</console>
</devices>
</domain>
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "tcp:127.0.0.1:7777"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<serial type='tcp'>
<source mode='connect' host='127.0.0.1' service='7777'/>
<protocol type='raw'/>
<target port='0'/>
</serial>
<console type='tcp'>
<source mode='connect' host='127.0.0.1' service='7777'/>
<protocol type='raw'/>
<target port='0'/>
</console>
</devices>
</domain>
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "udp:127.0.0.1:9999@0.0.0.0:99998"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<serial type='udp'>
<source mode='connect' host='127.0.0.1' service='9999'/>
<source mode='bind' host='0.0.0.0' service='99998'/>
<target port='0'/>
</serial>
<console type='udp'>
<source mode='connect' host='127.0.0.1' service='9999'/>
<source mode='bind' host='0.0.0.0' service='99998'/>
<target port='0'/>
</console>
</devices>
</domain>
name = "XenGuest2"
uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
maxmem = 579
memory = 394
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "d"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "unix:/tmp/serial.sock,listen"
<domain type='xen'>
<name>XenGuest2</name>
<uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='cdrom'/>
</os>
<currentMemory>403456</currentMemory>
<memory>592896</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<pae/>
<acpi/>
<apic/>
</features>
<clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
<driver name='phy'/>
<source dev='/dev/HostVG/XenGuest2'/>
<target dev='hda'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='file'/>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<interface type='bridge'>
<mac address='00:16:3E:66:92:9C'/>
<source bridge='xenbr1'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<serial type='unix'>
<source mode='bind' path='/tmp/serial.sock'/>
<target port='0'/>
</serial>
<console type='unix'>
<source mode='bind' path='/tmp/serial.sock'/>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -22,3 +22,5 @@ vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "none"
......@@ -22,3 +22,5 @@ vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "none"
......@@ -21,3 +21,5 @@ vnclisten = "127.0.0.1"
vncpasswd = "123poi"
disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
parallel = "none"
serial = "none"
......@@ -20,6 +20,8 @@
</interface>
<input type='mouse' bus='xen'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<console/>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -20,6 +20,8 @@
</interface>
<input type='mouse' bus='xen'/>
<graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
<console/>
<console type='pty'>
<target port='0'/>
</console>
</devices>
</domain>
......@@ -128,11 +128,8 @@ static int testCompareFormatXML(const char *xmcfg, const char *xml,
if (!(gotxml = xenXMDomainFormatXML(conn, conf)))
goto fail;
if (strcmp(xmlData, gotxml)) {
if (getenv("DEBUG_TESTS")) {
printf("Expect %d '%s'\n", (int)strlen(xmlData), xmlData);
printf("Actual %d '%s'\n", (int)strlen(gotxml), gotxml);
}
if (STRNEQ(xmlData, gotxml)) {
virtTestDifference(stderr, xmlData, gotxml);
goto fail;
}
......@@ -211,6 +208,17 @@ main(int argc, char **argv)
DO_TEST("fullvirt-localtime", 2);
DO_TEST("fullvirt-usbtablet", 2);
DO_TEST("fullvirt-usbmouse", 2);
DO_TEST("fullvirt-serial-file", 2);
DO_TEST("fullvirt-serial-null", 2);
DO_TEST("fullvirt-serial-pipe", 2);
DO_TEST("fullvirt-serial-pty", 2);
DO_TEST("fullvirt-serial-stdio", 2);
DO_TEST("fullvirt-serial-tcp", 2);
DO_TEST("fullvirt-serial-tcp-telnet", 2);
DO_TEST("fullvirt-serial-udp", 2);
DO_TEST("fullvirt-serial-unix", 2);
DO_TEST("fullvirt-parallel-tcp", 2);
exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
}
......
(vm (name 'fvtest')(memory 420)(maxmem 420)(vcpus 2)(uuid '596a5d2171f48fb2e068e2386a5c413e')(on_poweroff 'destroy')(on_reboot 'destroy')(on_crash 'destroy')(image (hvm (kernel '/var/lib/xen/vmlinuz.2Dn2YT')(ramdisk '/var/lib/xen/initrd.img.0u-Vhq')(args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/core/test/5.91/x86_64/os ')(loader '/usr/lib/xen/boot/hvmloader')(vcpus 2)(boot c)(usb 1)(serial pty)))(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/some.img')(mode 'w'))))
\ No newline at end of file
(vm (name 'fvtest')(memory 420)(maxmem 420)(vcpus 2)(uuid '596a5d2171f48fb2e068e2386a5c413e')(on_poweroff 'destroy')(on_reboot 'destroy')(on_crash 'destroy')(image (hvm (kernel '/var/lib/xen/vmlinuz.2Dn2YT')(ramdisk '/var/lib/xen/initrd.img.0u-Vhq')(args ' method=http://download.fedora.devel.redhat.com/pub/fedora/linux/core/test/5.91/x86_64/os ')(loader '/usr/lib/xen/boot/hvmloader')(vcpus 2)(boot c)(usb 1)(parallel none)(serial pty)))(device (vbd (dev 'ioemu:xvda')(uname 'file:/root/some.img')(mode 'w'))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(localtime 1)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)(localtime 1)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel tcp:localhost:9999)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<parallel type='tcp'>
<source mode='connect' host='localhost' service='9999' wiremode='raw'/>
<target port='0'/>
</parallel>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial file:/tmp/serial.log)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<serial type='file'>
<source path='/tmp/serial.log'/>
<target port='0'/>
</serial>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial null)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<serial type='null'>
<target port='0'/>
</serial>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial pipe:/tmp/serial.pipe)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<serial type='pipe'>
<source path='/tmp/serial.pipe'/>
<target port='0'/>
</serial>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial pty)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<serial type='pty'>
<target port='0'/>
</serial>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial stdio)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<serial type='stdio'>
<target port='0'/>
</serial>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial telnet:localhost:9999,listen)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<serial type='tcp'>
<source mode='bind' host='localhost' service='9999'/>
<protocol type='telnet'/>
<target port='0'/>
</serial>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial tcp:localhost:9999,listen)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<serial type='tcp'>
<source mode='bind' host='localhost' service='9999' wiremode='raw'/>
<target port='0'/>
</serial>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial udp:localhost:9998@localhost:9999)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<serial type='udp'>
<source mode='connect' host='localhost' service='9998'/>
<source mode='bind' host='localhost' service='9999'/>
<target port='0'/>
</serial>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial unix:/tmp/serial.sock,listen)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
<domain type='xen'>
<name>fvtest</name>
<uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
<boot dev='hd'/>
</os>
<memory>409600</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<features>
<acpi/>
</features>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:1b:b1:47'/>
<script path='vif-bridge'/>
</interface>
<disk type='file' device='cdrom'>
<source file='/root/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file'>
<source file='/root/foo.img'/>
<target dev='ioemu:hda'/>
</disk>
<serial type='unix'>
<source mode='bind' path='/tmp/serial.sock'/>
<target port='0'/>
</serial>
<graphics type='vnc' port='5917' keymap='ja'/>
</devices>
</domain>
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice mouse)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice mouse)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice tablet)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice tablet)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)(usb 1)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)(vncdisplay 17)(keymap ja)))(device (vbd (dev 'hdc:cdrom')(uname 'file:/root/boot.iso')(mode 'r')))(device (vbd (dev 'hda:disk')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)(usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)(vncdisplay 17)(keymap ja)))(device (vbd (dev 'hdc:cdrom')(uname 'file:/root/boot.iso')(mode 'r')))(device (vbd (dev 'hda:disk')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)(usb 1)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)(vncunused 1)(keymap ja)))(device (vbd (dev 'hdc:cdrom')(uname 'file:/root/boot.iso')(mode 'r')))(device (vbd (dev 'hda:disk')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)(usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)(vncunused 1)(keymap ja)))(device (vbd (dev 'hdc:cdrom')(uname 'file:/root/boot.iso')(mode 'r')))(device (vbd (dev 'hda:disk')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(parallel none)(serial none)(device_model '/usr/lib64/xen/bin/qemu-dm')(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
(vm (name 'test')(memory 350)(maxmem 382)(vcpus 1)(uuid 'cc2315e7d26a307a438c6d188ec4c09c')(on_poweroff 'destroy')(on_reboot 'destroy')(on_crash 'destroy')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)(apic 1)(pae 1)(usb 1)(device_model '/usr/lib/xen/bin/qemu-dm')(vnc 1)(vncdisplay 6)))(device (vbd (dev 'hda:disk:disk')(uname 'phy:/dev/sda8')(mode 'w')))(device (vbd (dev 'hdc:cdrom')(mode 'r')))(device (vif (mac '00:16:3e:0a:7b:39')(type ioemu))))
\ No newline at end of file
(vm (name 'test')(memory 350)(maxmem 382)(vcpus 1)(uuid 'cc2315e7d26a307a438c6d188ec4c09c')(on_poweroff 'destroy')(on_reboot 'destroy')(on_crash 'destroy')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(vcpus 1)(boot c)(acpi 1)(apic 1)(pae 1)(usb 1)(parallel none)(serial none)(device_model '/usr/lib/xen/bin/qemu-dm')(vnc 1)(vncdisplay 6)))(device (vbd (dev 'hda:disk:disk')(uname 'phy:/dev/sda8')(mode 'w')))(device (vbd (dev 'hdc:cdrom')(mode 'r')))(device (vif (mac '00:16:3e:0a:7b:39')(type ioemu))))
\ No newline at end of file
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册