[Libvir] PATCH: Support input devices in XML format

Daniel P. Berrange berrange at redhat.com
Tue Jul 17 18:51:13 UTC 2007


On Tue, Jul 17, 2007 at 02:03:12AM +0100, Daniel P. Berrange wrote:
> This patch is the first step towards supporting USB devices in libvirt
> XML format. As per the original thread some months back[1], I'm the
> grouping is being done based on device classes, rather than bus types.
> So this first patch is actually introducing the concept of 'input'
> devices. This is best illustrated by examples

My first patch forgot to actually pass the neccessary -usbdevice arguments
to QEMU ! Attaching a revised version which fixes this.

I've also now got test code for validating QEMU parsing. I'm not attaching
that since its basically just huge quantities of sample XML data and files
with corresponding argv for QEMU, so not really interesting to review.

Dan.
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 
-------------- next part --------------
? tests/qemuxml2argvdata
? tests/qemuxml2argvtest
? tests/qemuxml2argvtest.c
? tests/qemuxml2xmltest
? tests/qemuxml2xmltest.c
Index: src/qemu_conf.c
===================================================================
RCS file: /data/cvs/libvirt/src/qemu_conf.c,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 qemu_conf.c
--- src/qemu_conf.c	16 Jul 2007 21:30:30 -0000	1.3
+++ src/qemu_conf.c	17 Jul 2007 18:47:14 -0000
@@ -806,6 +806,74 @@ static struct qemud_vm_net_def *qemudPar
 }
 
 
+/* Parse the XML definition for a network interface */
+static struct qemud_vm_input_def *qemudParseInputXML(virConnectPtr conn,
+                                                   struct qemud_driver *driver ATTRIBUTE_UNUSED,
+                                                   xmlNodePtr node) {
+    struct qemud_vm_input_def *input = calloc(1, sizeof(struct qemud_vm_input_def));
+    xmlChar *type = NULL;
+    xmlChar *bus = NULL;
+
+    if (!input) {
+        qemudReportError(conn, NULL, NULL, VIR_ERR_NO_MEMORY, "input");
+        return NULL;
+    }
+
+    type = xmlGetProp(node, BAD_CAST "type");
+    bus = xmlGetProp(node, BAD_CAST "bus");
+
+    if (!type) {
+        qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, "no type provide for input device");
+        goto error;
+    }
+
+    if (!strcmp((const char *)type, "mouse")) {
+        input->type = QEMU_INPUT_TYPE_MOUSE;
+    } else if (!strcmp((const char *)type, "tablet")) {
+        input->type = QEMU_INPUT_TYPE_TABLET;
+    } else {
+        qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, "unsupported input device type %s", (const char*)type);
+        goto error;
+    }
+
+    if (bus) {
+        if (!strcmp((const char*)bus, "ps2")) { /* Only allow mouse */
+            if (input->type == QEMU_INPUT_TYPE_TABLET) {
+                qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, "ps2 bus does not support %s input device", (const char*)type);
+                goto error;
+            }
+            input->bus = QEMU_INPUT_BUS_PS2;
+        } else if (!strcmp((const char *)bus, "usb")) { /* Allow mouse & keyboard */
+            input->bus = QEMU_INPUT_BUS_USB;
+        } else {
+            qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, "unsupported input bus %s", (const char*)bus);
+            goto error;
+        }
+    } else {
+        if (input->type == QEMU_INPUT_TYPE_MOUSE)
+            input->bus = QEMU_INPUT_BUS_PS2;
+        else
+            input->bus = QEMU_INPUT_BUS_USB;
+    }
+
+    if (type)
+        xmlFree(type);
+    if (bus)
+        xmlFree(bus);
+
+    return input;
+
+ error:
+    if (type)
+        xmlFree(type);
+    if (bus)
+        xmlFree(bus);
+
+    free(input);
+    return NULL;
+}
+
+
 /*
  * Parses a libvirt XML definition of a guest, and populates the
  * the qemud_vm struct with matching data about the guests config
@@ -1091,7 +1159,6 @@ static struct qemud_vm_def *qemudParseXM
             } else if (!strcmp((char *)prop, "net")) {
                 def->os.bootDevs[def->os.nBootDevs++] = QEMUD_BOOT_NET;
             } else {
-                xmlFree(prop);
                 goto error;
             }
             xmlFree(prop);
@@ -1193,6 +1260,61 @@ static struct qemud_vm_def *qemudParseXM
         }
     }
     xmlXPathFreeObject(obj);
+
+    /* analysis of the input devices */
+    obj = xmlXPathEval(BAD_CAST "/domain/devices/input", ctxt);
+    if ((obj != NULL) && (obj->type == XPATH_NODESET) &&
+        (obj->nodesetval != NULL) && (obj->nodesetval->nodeNr >= 0)) {
+        struct qemud_vm_input_def *prev = NULL;
+        for (i = 0; i < obj->nodesetval->nodeNr; i++) {
+            struct qemud_vm_input_def *input;
+            if (!(input = qemudParseInputXML(conn, driver, obj->nodesetval->nodeTab[i]))) {
+                goto error;
+            }
+            /* Mouse + PS/2 is implicit with graphics, so don't store it */
+            if (input->bus == QEMU_INPUT_BUS_PS2 &&
+                input->type == QEMU_INPUT_TYPE_MOUSE) {
+                free(input);
+                continue;
+            }
+            def->ninputs++;
+            input->next = NULL;
+            if (i == 0) {
+                def->inputs = input;
+            } else {
+                prev->next = input;
+            }
+            prev = input;
+        }
+    }
+    xmlXPathFreeObject(obj);
+    obj = NULL;
+
+    /* If graphics are enabled, there's an implicit PS2 mouse */
+    if (def->graphicsType != QEMUD_GRAPHICS_NONE) {
+        int hasPS2mouse = 0;
+        struct qemud_vm_input_def *input = def->inputs;
+        while (input) {
+            if (input->type == QEMU_INPUT_TYPE_MOUSE &&
+                input->bus == QEMU_INPUT_BUS_PS2)
+                hasPS2mouse = 1;
+            input = input->next;
+        }
+
+        if (!hasPS2mouse) {
+            input = calloc(1, sizeof(struct qemud_vm_input_def));
+            if (!input) {
+                qemudReportError(conn, NULL, NULL, VIR_ERR_NO_MEMORY, "input");
+                goto error;
+            }
+            input->type = QEMU_INPUT_TYPE_MOUSE;
+            input->bus = QEMU_INPUT_BUS_PS2;
+            input->next = def->inputs;
+            def->inputs = input;
+            def->ninputs++;
+        }
+    }
+
     xmlXPathFreeContext(ctxt);
 
     return def;
@@ -1307,6 +1429,7 @@ int qemudBuildCommandLine(virConnectPtr 
     struct stat sb;
     struct qemud_vm_disk_def *disk = vm->def->disks;
     struct qemud_vm_net_def *net = vm->def->nets;
+    struct qemud_vm_input_def *input = vm->def->inputs;
     struct utsname ut;
     int disableKQEMU = 0;
 
@@ -1348,6 +1471,8 @@ int qemudBuildCommandLine(virConnectPtr 
         disableKQEMU + /* Disable kqemu */
         2 * vm->def->ndisks + /* disks*/
         (vm->def->nnets > 0 ? (4 * vm->def->nnets) : 2) + /* networks */
+        1 + /* usb */
+        2 * vm->def->ninputs + /* input devices */
         2 + /* memory*/
         2 + /* cpus */
         2 + /* boot device */
@@ -1561,6 +1686,19 @@ int qemudBuildCommandLine(virConnectPtr 
         }
     }
 
+    if (!((*argv)[++n] = strdup("-usb")))
+        goto no_memory;
+    while (input) {
+        if (input->bus == QEMU_INPUT_BUS_USB) {
+            if (!((*argv)[++n] = strdup("-usbdevice")))
+                goto no_memory;
+            if (!((*argv)[++n] = strdup(input->type == QEMU_INPUT_TYPE_MOUSE ? "mouse" : "tablet")))
+                goto no_memory;
+        }
+
+        input = input->next;
+    }
+
     if (vm->def->graphicsType == QEMUD_GRAPHICS_VNC) {
         char port[10];
         int ret;
@@ -2541,6 +2679,7 @@ char *qemudGenerateXML(virConnectPtr con
     unsigned char *uuid;
     struct qemud_vm_disk_def *disk;
     struct qemud_vm_net_def *net;
+    struct qemud_vm_input_def *input;
     const char *type = NULL;
     int n;
 
@@ -2769,6 +2908,19 @@ char *qemudGenerateXML(virConnectPtr con
         net = net->next;
     }
 
+    input = def->inputs;
+    while (input) {
+        if (input->bus != QEMU_INPUT_BUS_PS2 &&
+            virBufferVSprintf(buf, "    <input type='%s' bus='usb'/>\n",
+                              input->type == QEMU_INPUT_TYPE_MOUSE ? "mouse" : "tablet") < 0)
+            goto no_memory;
+        input = input->next;
+    }
+    /* If graphics is enable, add implicit mouse */
+    if (def->graphicsType != QEMUD_GRAPHICS_NONE)
+        if (virBufferAdd(buf, "    <input type='mouse' bus='ps2'/>\n", -1) < 0)
+            goto no_memory;
+
     switch (def->graphicsType) {
     case QEMUD_GRAPHICS_VNC:
         if (virBufferAdd(buf, "    <graphics type='vnc'", -1) < 0)
Index: src/qemu_conf.h
===================================================================
RCS file: /data/cvs/libvirt/src/qemu_conf.h,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 qemu_conf.h
--- src/qemu_conf.h	16 Jul 2007 21:30:30 -0000	1.3
+++ src/qemu_conf.h	17 Jul 2007 18:47:14 -0000
@@ -109,6 +109,23 @@ struct qemud_vm_net_def {
     struct qemud_vm_net_def *next;
 };
 
+
+enum qemu_vm_input_type {
+    QEMU_INPUT_TYPE_MOUSE,
+    QEMU_INPUT_TYPE_TABLET,
+};
+
+enum qemu_vm_input_bus {
+    QEMU_INPUT_BUS_PS2,
+    QEMU_INPUT_BUS_USB,
+};
+
+struct qemud_vm_input_def {
+    int type;
+    int bus;
+    struct qemud_vm_input_def *next;
+};
+
 #define QEMUD_MAX_BOOT_DEVS 4
 
 /* 3 possible boot devices */
@@ -119,7 +136,7 @@ enum qemud_vm_boot_order {
     QEMUD_BOOT_NET,
 };
 /* 3 possible graphics console modes */
-enum qemud_vm_grapics_type {
+enum qemud_vm_graphics_type {
     QEMUD_GRAPHICS_NONE,
     QEMUD_GRAPHICS_SDL,
     QEMUD_GRAPHICS_VNC,
@@ -175,6 +192,9 @@ struct qemud_vm_def {
 
     int nnets;
     struct qemud_vm_net_def *nets;
+
+    int ninputs;
+    struct qemud_vm_input_def *inputs;
 };
 
 /* Guest VM runtime state */
Index: src/xend_internal.c
===================================================================
RCS file: /data/cvs/libvirt/src/xend_internal.c,v
retrieving revision 1.130
diff -u -p -u -p -r1.130 xend_internal.c
--- src/xend_internal.c	16 Jul 2007 21:30:30 -0000	1.130
+++ src/xend_internal.c	17 Jul 2007 18:47:14 -0000
@@ -1651,11 +1651,13 @@ xend_parse_sexp_desc(virConnectPtr conn,
             tmp = sexpr_node(node, "device/vfb/type");
 
             if (tmp && !strcmp(tmp, "sdl")) {
+                virBufferVSprintf(&buf, "    <input type='mouse' bus='%s'/>\n", hvm ? "ps2": "xen");
                 virBufferAdd(&buf, "    <graphics type='sdl'/>\n", 27);
             } else if (tmp && !strcmp(tmp, "vnc")) {
                 int port = xenStoreDomainGetVNCPort(conn, domid);
                 const char *listenAddr = sexpr_node(node, "device/vfb/vnclisten");
                 const char *keymap = sexpr_node(node, "device/vfb/keymap");
+                virBufferVSprintf(&buf, "    <input type='mouse' bus='%s'/>\n", hvm ? "ps2": "xen");
                 virBufferVSprintf(&buf, "    <graphics type='vnc' port='%d'", port);
                 if (listenAddr)
                     virBufferVSprintf(&buf, " listen='%s'", listenAddr);
@@ -1696,6 +1698,22 @@ xend_parse_sexp_desc(virConnectPtr conn,
         }
     }
 
+    /* in case of HVM we have devices emulation */
+    if (hvm) {
+        for (cur = sexpr_lookup(root, "domain/image/hvm"); cur && cur->kind == SEXPR_CONS; cur = cur->cdr) {
+            node = cur->car;
+            if (sexpr_lookup(node, "usbdevice")) {
+                tmp = sexpr_node(node, "usbdevice");
+                if (tmp && *tmp) {
+                    if (!strcmp(tmp, "usbtablet"))
+                        virBufferAdd(&buf, "    <input type='tablet' bus='usb'/>\n", 37);
+                    else if (!strcmp(tmp, "usbmouse"))
+                        virBufferAdd(&buf, "    <input type='mouse' bus='usb'/>\n", 36);
+                }
+            }
+        }
+    }
+
     /* Graphics device (HVM <= 3.0.4, or PV <= 3.0.3) vnc config */
     if ((hvm && xendConfigVersion < 4) ||
         (!hvm && xendConfigVersion < 3)) {
@@ -1713,6 +1731,7 @@ xend_parse_sexp_desc(virConnectPtr conn,
                  */
                 if (port == -1 && xendConfigVersion < 2)
                     port = 5900 + domid;
+                virBufferVSprintf(&buf, "    <input type='mouse' bus='%s'/>\n", hvm ? "ps2" : "xen");
                 virBufferVSprintf(&buf, "    <graphics type='vnc' port='%d'", port);
                 if (listenAddr)
                     virBufferVSprintf(&buf, " listen='%s'", listenAddr);
@@ -1725,8 +1744,10 @@ xend_parse_sexp_desc(virConnectPtr conn,
         /* Graphics device (HVM, or old (pre-3.0.4) style PV sdl config) */
         tmp = sexpr_fmt_node(root, "domain/image/%s/sdl", hvm ? "hvm" : "linux");
         if (tmp != NULL) {
-            if (tmp[0] == '1')
+            if (tmp[0] == '1') {
+                virBufferVSprintf(&buf, "    <input type='mouse' bus='%s'/>\n", hvm ? "ps2" : "xen");
                 virBufferAdd(&buf, "    <graphics type='sdl'/>\n", 27 );
+            }
         }
     }
 
Index: src/xm_internal.c
===================================================================
RCS file: /data/cvs/libvirt/src/xm_internal.c,v
retrieving revision 1.37
diff -u -p -u -p -r1.37 xm_internal.c
--- src/xm_internal.c	16 Jul 2007 21:30:30 -0000	1.37
+++ src/xm_internal.c	17 Jul 2007 18:47:14 -0000
@@ -913,6 +913,17 @@ char *xenXMDomainFormatXML(virConnectPtr
         }
     }
 
+    if (hvm) {
+        if (xenXMConfigGetString(conf, "usbdevice", &str) == 0 && str) {
+            if (!strcmp(str, "tablet"))
+                virBufferAdd(buf, "    <input type='tablet' bus='usb'/>\n", 37);
+            else if (!strcmp(str, "mouse"))
+                virBufferAdd(buf, "    <input type='mouse' bus='usb'/>\n", 36);
+            /* Ignore else branch - probably some other non-input device we don't
+               support in libvirt yet */
+        }
+    }
+
     /* HVM guests, or old PV guests use this config format */
     if (hvm || priv->xendConfigVersion < 3) {
         if (xenXMConfigGetInt(conf, "vnc", &val) == 0 && val) {
@@ -980,6 +991,9 @@ char *xenXMDomainFormatXML(virConnectPtr
         }
     }
 
+    if (vnc || sdl) {
+        virBufferVSprintf(buf, "    <input type='mouse' bus='%s'/>\n", hvm ? "ps2":"xen");
+    }
     if (vnc) {
         virBufferVSprintf(buf,
                           "    <graphics type='vnc' port='%ld'",
@@ -1902,6 +1916,9 @@ virConfPtr xenXMParseXMLToConfig(virConn
                                           "cannot set the device_model parameter") < 0)
             goto error;
 
+        if (xenXMConfigSetStringFromXPath(conn, conf, ctxt, "usbdevice", "string(/domain/devices/input[@bus='usb' or (not(@bus) and @type='tablet')]/@type)", 1,
+                                          "cannot set the usbdevice parameter") < 0)
+            goto error;
     }
 
     if (hvm || priv->xendConfigVersion < 3) {
Index: src/xml.c
===================================================================
RCS file: /data/cvs/libvirt/src/xml.c,v
retrieving revision 1.84
diff -u -p -u -p -r1.84 xml.c
--- src/xml.c	16 Jul 2007 21:30:30 -0000	1.84
+++ src/xml.c	17 Jul 2007 18:47:14 -0000
@@ -416,11 +416,12 @@ static int
 virDomainParseXMLOSDescHVM(virConnectPtr conn, xmlNodePtr node, virBufferPtr buf, xmlXPathContextPtr ctxt, int vcpus, int xendConfigVersion)
 {
     xmlNodePtr cur, txt;
+    xmlNodePtr *nodes = NULL;
     xmlChar *type = NULL;
     xmlChar *loader = NULL;
     char bootorder[5];
     int nbootorder = 0;
-    int res;
+    int res, nb_nodes;
     char *str;
 
     cur = node->children;
@@ -540,6 +541,57 @@ virDomainParseXMLOSDescHVM(virConnectPtr
     if (virXPathNode("/domain/features/pae", ctxt) != NULL)
         virBufferAdd(buf, "(pae 1)", 7);
 
+    virBufferAdd(buf, "(usb 1)", 7);
+    nb_nodes = virXPathNodeSet("/domain/devices/input", ctxt, &nodes);
+    if (nb_nodes > 0) {
+        int i;
+        for (i = 0; i < nb_nodes; i++) {
+            xmlChar *itype = NULL, *bus = NULL;
+            int isMouse = 1;
+
+            itype = xmlGetProp(nodes[i], (xmlChar *)"type");
+
+            if (!itype) {
+                goto error;
+            }
+            if (!strcmp((const char *)itype, "tablet"))
+                isMouse = 0;
+            else if (strcmp((const char*)itype, "mouse")) {
+                xmlFree(itype);
+                virXMLError(conn, VIR_ERR_XML_ERROR, "input", 0);
+                goto error;
+            }
+            xmlFree(itype);
+
+            bus = xmlGetProp(nodes[i], (xmlChar *)"bus");
+            if (!bus) {
+                if (!isMouse) {
+                    /* Nothing - implicit ps2 */
+                } else {
+                    virBufferAdd(buf, "(usbdevice tablet)", 13);
+                }
+            } else {
+                if (!strcmp((const char*)bus, "ps2")) {
+                    if (!isMouse) {
+                        xmlFree(bus);
+                        virXMLError(conn, VIR_ERR_XML_ERROR, "input", 0);
+                        goto error;
+                    }
+                    /* Nothing - implicit ps2 */
+                } else if (!strcmp((const char*)bus, "usb")) {
+                    if (isMouse)
+                        virBufferAdd(buf, "(usbdevice mouse)", 17);
+                    else
+                        virBufferAdd(buf, "(usbdevice tablet)", 18);
+                }
+            }
+            xmlFree(bus);
+        }
+        free(nodes);
+        nodes = NULL;
+    }
+
+
     res = virXPathBoolean("count(domain/devices/console) > 0", ctxt);
     if (res < 0) {
         virXMLError(conn, VIR_ERR_XML_ERROR, NULL, 0);
@@ -572,6 +624,8 @@ virDomainParseXMLOSDescHVM(virConnectPtr
     return (0);
 
  error:
+    if (nodes)
+        free(nodes);
     return(-1);
 }
 
Index: tests/Makefile.am
===================================================================
RCS file: /data/cvs/libvirt/tests/Makefile.am,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 Makefile.am
--- tests/Makefile.am	4 Jul 2007 09:16:23 -0000	1.20
+++ tests/Makefile.am	17 Jul 2007 18:47:14 -0000
@@ -32,9 +32,10 @@ LDADDS = \
 EXTRA_DIST = xmlrpcserver.py test_conf.sh
 
 noinst_PROGRAMS = xmlrpctest xml2sexprtest sexpr2xmltest virshtest conftest \
-	reconnect xmconfigtest xencapstest
+	reconnect xmconfigtest xencapstest qemuxml2argvtest qemuxml2xmltest
 
-TESTS = xml2sexprtest sexpr2xmltest virshtest test_conf.sh xmconfigtest xencapstest
+TESTS = xml2sexprtest sexpr2xmltest virshtest test_conf.sh xmconfigtest \
+        xencapstest qemuxml2argvtest qemuxml2xmltest
 if ENABLE_XEN_TESTS
   TESTS += reconnect
 endif
@@ -70,6 +71,18 @@ xmconfigtest_SOURCES = \
 xmconfigtest_LDFLAGS =
 xmconfigtest_LDADD = $(LDADDS)
 
+qemuxml2argvtest_SOURCES = \
+	qemuxml2argvtest.c \
+	testutils.c testutils.h
+qemuxml2argvtest_LDFLAGS =
+qemuxml2argvtest_LDADD = $(LDADDS)
+
+qemuxml2xmltest_SOURCES = \
+	qemuxml2xmltest.c \
+	testutils.c testutils.h
+qemuxml2xmltest_LDFLAGS =
+qemuxml2xmltest_LDADD = $(LDADDS)
+
 virshtest_SOURCES = \
 	virshtest.c \
 	testutils.c testutils.h
Index: tests/sexpr2xmltest.c
===================================================================
RCS file: /data/cvs/libvirt/tests/sexpr2xmltest.c,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 sexpr2xmltest.c
--- tests/sexpr2xmltest.c	16 Jul 2007 21:30:30 -0000	1.14
+++ tests/sexpr2xmltest.c	17 Jul 2007 18:47:14 -0000
@@ -44,113 +44,124 @@ static int testCompareFiles(const char *
   return ret;
 }
 
-static int testComparePVversion1(void *data ATTRIBUTE_UNUSED) {
+static int testComparePVversion1(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-pv.xml",
 			  "sexpr2xmldata/sexpr2xml-pv.sexpr",
 			  1);
 }
 
-static int testCompareFVversion1(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFVversion1(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-fv.xml",
 			  "sexpr2xmldata/sexpr2xml-fv.sexpr",
 			  1);
 }
 
-static int testComparePVversion2(void *data ATTRIBUTE_UNUSED) {
+static int testComparePVversion2(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-pv.xml",
 			  "sexpr2xmldata/sexpr2xml-pv.sexpr",
 			  2);
 }
 
-static int testComparePVOrigVFB(void *data ATTRIBUTE_UNUSED) {
+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(void *data ATTRIBUTE_UNUSED) {
+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(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFVversion2(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-v2.xml",
 			  "sexpr2xmldata/sexpr2xml-fv-v2.sexpr",
 			  2);
 }
 
-static int testComparePVBootloader(void *data ATTRIBUTE_UNUSED) {
+static int testComparePVBootloader(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-pv-bootloader.xml",
 			  "sexpr2xmldata/sexpr2xml-pv-bootloader.sexpr",
 			  2);
 }
 
-static int testCompareDiskFile(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDiskFile(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-disk-file.xml",
 			  "sexpr2xmldata/sexpr2xml-disk-file.sexpr",
 			  1);
 }
 
-static int testCompareDiskBlock(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDiskBlock(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-disk-block.xml",
 			  "sexpr2xmldata/sexpr2xml-disk-block.sexpr",
 			  1);
 }
 
-static int testCompareDiskDrvBlktapQcow(void *data ATTRIBUTE_UNUSED) {
+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(void *data ATTRIBUTE_UNUSED) {
+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(void *data ATTRIBUTE_UNUSED) {
+static int testCompareResizedMemory(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-curmem.xml",
 			  "sexpr2xmldata/sexpr2xml-curmem.sexpr",
 			  1);
 }
 
 
-static int testCompareNetRouted(void *data ATTRIBUTE_UNUSED) {
+static int testCompareNetRouted(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-net-routed.xml",
 			  "sexpr2xmldata/sexpr2xml-net-routed.sexpr",
 			  1);
 }
 
-static int testCompareNetBridged(void *data ATTRIBUTE_UNUSED) {
+static int testCompareNetBridged(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-net-bridged.xml",
 			  "sexpr2xmldata/sexpr2xml-net-bridged.sexpr",
 			  1);
 }
 
-static int testCompareNoSourceCDRom(void *data ATTRIBUTE_UNUSED) {
+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 testCompareFVclockUTC(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFVInputUSBMouse(const void *data ATTRIBUTE_UNUSED) {
+  return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-usbmouse.xml",
+			  "sexpr2xmldata/sexpr2xml-fv-usbmouse.sexpr",
+			  1);
+}
+
+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(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFVclockLocaltime(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-localtime.xml",
 			  "sexpr2xmldata/sexpr2xml-fv-localtime.sexpr",
 			  1);
 }
 
 
-
 int
 main(int argc, char **argv)
 {
@@ -223,6 +234,13 @@ main(int argc, char **argv)
 		    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;
Index: tests/testutils.c
===================================================================
RCS file: /data/cvs/libvirt/tests/testutils.c,v
retrieving revision 1.6
diff -u -p -u -p -r1.6 testutils.c
--- tests/testutils.c	15 Jun 2007 15:24:20 -0000	1.6
+++ tests/testutils.c	17 Jul 2007 18:47:14 -0000
@@ -52,7 +52,7 @@ virtTestCountAverage(double *items, int 
  * returns: -1 = error, 0 = success
  */
 int
-virtTestRun(const char *title, int nloops, int (*body)(void *data), void *data)
+virtTestRun(const char *title, int nloops, int (*body)(const void *data), const void *data)
 {
     int i, ret = 0;
     double *ts = NULL;
Index: tests/testutils.h
===================================================================
RCS file: /data/cvs/libvirt/tests/testutils.h,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 testutils.h
--- tests/testutils.h	24 Aug 2006 21:46:28 -0000	1.3
+++ tests/testutils.h	17 Jul 2007 18:47:14 -0000
@@ -17,23 +17,31 @@
 extern "C" {
 #endif
 
+  
+    double virtTestCountAverage(double *items,
+                                int nitems);
 
-double	virtTestCountAverage	(double *items, 
-				 int nitems);
-
-int	virtTestRun		(const char *title, 
-				 int nloops, 
-				 int (*body)(void *data), 
-				 void *data);
-int virtTestLoadFile(const char *name,
-		     char **buf,
-		     int buflen);
-int virtTestCaptureProgramOutput(const char *const argv[],
-				 char **buf,
-				 int buflen);
+    int	virtTestRun(const char *title,
+                    int nloops,
+                    int (*body)(const void *data),
+                    const void *data);
+    int virtTestLoadFile(const char *name,
+                         char **buf,
+                         int buflen);
+    int virtTestCaptureProgramOutput(const char *const argv[],
+                                     char **buf,
+                                     int buflen);
 
 #ifdef __cplusplus
 }
 #endif
 #endif /* __VIT_TEST_UTILS_H__ */
 
+/*
+ * Local variables:
+ *  indent-tabs-mode: nil
+ *  c-indent-level: 4
+ *  c-basic-offset: 4
+ *  tab-width: 4
+ * End:
+ */
Index: tests/virshtest.c
===================================================================
RCS file: /data/cvs/libvirt/tests/virshtest.c,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 virshtest.c
--- tests/virshtest.c	15 Jun 2007 15:24:20 -0000	1.4
+++ tests/virshtest.c	17 Jul 2007 18:47:15 -0000
@@ -66,7 +66,7 @@ static char *custom_uri;
 
 
 
-static int testCompareListDefault(void *data ATTRIBUTE_UNUSED) {
+static int testCompareListDefault(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_DEFAULT,
     "list",
@@ -77,7 +77,7 @@ static int testCompareListDefault(void *
 			   argv);
 }
 
-static int testCompareListCustom(void *data ATTRIBUTE_UNUSED) {
+static int testCompareListCustom(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "list",
@@ -89,7 +89,7 @@ static int testCompareListCustom(void *d
 }
 
 
-static int testCompareNodeinfoDefault(void *data ATTRIBUTE_UNUSED) {
+static int testCompareNodeinfoDefault(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_DEFAULT,
     "nodeinfo",
@@ -100,7 +100,7 @@ static int testCompareNodeinfoDefault(vo
 			   argv);
 }
 
-static int testCompareNodeinfoCustom(void *data ATTRIBUTE_UNUSED) {
+static int testCompareNodeinfoCustom(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "nodeinfo",
@@ -111,7 +111,7 @@ static int testCompareNodeinfoCustom(voi
 			   argv);
 }
 
-static int testCompareDominfoByID(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDominfoByID(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "dominfo",
@@ -124,7 +124,7 @@ static int testCompareDominfoByID(void *
 }
 
 
-static int testCompareDominfoByUUID(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDominfoByUUID(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "dominfo",
@@ -137,7 +137,7 @@ static int testCompareDominfoByUUID(void
 }
 
 
-static int testCompareDominfoByName(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDominfoByName(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "dominfo",
@@ -150,7 +150,7 @@ static int testCompareDominfoByName(void
 }
 
 
-static int testCompareDomuuidByID(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDomuuidByID(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "domuuid",
@@ -162,7 +162,7 @@ static int testCompareDomuuidByID(void *
 			   argv);
 }
 
-static int testCompareDomuuidByName(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDomuuidByName(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "domuuid",
@@ -174,7 +174,7 @@ static int testCompareDomuuidByName(void
 			   argv);
 }
 
-static int testCompareDomidByName(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDomidByName(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "domid",
@@ -187,7 +187,7 @@ static int testCompareDomidByName(void *
 }
 
 
-static int testCompareDomidByUUID(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDomidByUUID(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "domid",
@@ -200,7 +200,7 @@ static int testCompareDomidByUUID(void *
 }
 
 
-static int testCompareDomnameByID(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDomnameByID(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "domname",
@@ -213,7 +213,7 @@ static int testCompareDomnameByID(void *
 }
 
 
-static int testCompareDomnameByUUID(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDomnameByUUID(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "domname",
@@ -225,7 +225,7 @@ static int testCompareDomnameByUUID(void
 			   argv);
 }
 
-static int testCompareDomstateByID(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDomstateByID(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "domstate",
@@ -238,7 +238,7 @@ static int testCompareDomstateByID(void 
 }
 
 
-static int testCompareDomstateByUUID(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDomstateByUUID(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "domstate",
@@ -250,7 +250,7 @@ static int testCompareDomstateByUUID(voi
 			   argv);
 }
 
-static int testCompareDomstateByName(void *data ATTRIBUTE_UNUSED) {
+static int testCompareDomstateByName(const void *data ATTRIBUTE_UNUSED) {
   const char *const argv[] = {
     VIRSH_CUSTOM,
     "domstate",
Index: tests/xencapstest.c
===================================================================
RCS file: /data/cvs/libvirt/tests/xencapstest.c,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 xencapstest.c
--- tests/xencapstest.c	29 May 2007 14:44:15 -0000	1.2
+++ tests/xencapstest.c	17 Jul 2007 18:47:15 -0000
@@ -60,21 +60,21 @@ static int testCompareFiles(const char *
   return ret;
 }
 
-static int testXeni686(void *data ATTRIBUTE_UNUSED) {
+static int testXeni686(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("i686",
 			  "xencapsdata/xen-i686.xml",
 			  "xencapsdata/xen-i686.cpuinfo",
 			  "xencapsdata/xen-i686.caps");
 }
 
-static int testXeni686PAE(void *data ATTRIBUTE_UNUSED) {
+static int testXeni686PAE(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("i686",
 			  "xencapsdata/xen-i686-pae.xml",
 			  "xencapsdata/xen-i686-pae.cpuinfo",
 			  "xencapsdata/xen-i686-pae.caps");
 }
 
-static int testXeni686PAEHVM(void *data ATTRIBUTE_UNUSED) {
+static int testXeni686PAEHVM(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("i686",
 			  "xencapsdata/xen-i686-pae-hvm.xml",
 			  "xencapsdata/xen-i686-pae-hvm.cpuinfo",
@@ -84,7 +84,7 @@ static int testXeni686PAEHVM(void *data 
 /* No PAE + HVM is non-sensical - all VMX capable
    CPUs have PAE */
 /*
-static int testXeni686HVM(void *data ATTRIBUTE_UNUSED) {
+static int testXeni686HVM(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("i686",
 			  "xencapsdata/xen-i686-hvm.xml",
 			  "xencapsdata/xen-i686.cpuinfo",
@@ -92,46 +92,46 @@ static int testXeni686HVM(void *data ATT
 }
 */
 
-static int testXenx86_64(void *data ATTRIBUTE_UNUSED) {
+static int testXenx86_64(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("x86_64",
 			  "xencapsdata/xen-x86_64.xml",
 			  "xencapsdata/xen-x86_64.cpuinfo",
 			  "xencapsdata/xen-x86_64.caps");
 }
-static int testXenx86_64HVM(void *data ATTRIBUTE_UNUSED) {
+static int testXenx86_64HVM(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("x86_64",
 			  "xencapsdata/xen-x86_64-hvm.xml",
 			  "xencapsdata/xen-x86_64-hvm.cpuinfo",
 			  "xencapsdata/xen-x86_64-hvm.caps");
 }
 
-static int testXenia64(void *data ATTRIBUTE_UNUSED) {
+static int testXenia64(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("ia64",
 			  "xencapsdata/xen-ia64.xml",
 			  "xencapsdata/xen-ia64.cpuinfo",
 			  "xencapsdata/xen-ia64.caps");
 }
-static int testXenia64BE(void *data ATTRIBUTE_UNUSED) {
+static int testXenia64BE(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("ia64",
 			  "xencapsdata/xen-ia64-be.xml",
 			  "xencapsdata/xen-ia64-be.cpuinfo",
 			  "xencapsdata/xen-ia64-be.caps");
 }
 
-static int testXenia64HVM(void *data ATTRIBUTE_UNUSED) {
+static int testXenia64HVM(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("ia64",
 			  "xencapsdata/xen-ia64-hvm.xml",
 			  "xencapsdata/xen-ia64-hvm.cpuinfo",
 			  "xencapsdata/xen-ia64-hvm.caps");
 }
-static int testXenia64BEHVM(void *data ATTRIBUTE_UNUSED) {
+static int testXenia64BEHVM(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("ia64",
 			  "xencapsdata/xen-ia64-be-hvm.xml",
 			  "xencapsdata/xen-ia64-be-hvm.cpuinfo",
 			  "xencapsdata/xen-ia64-be-hvm.caps");
 }
 
-static int testXenppc64(void *data ATTRIBUTE_UNUSED) {
+static int testXenppc64(const void *data ATTRIBUTE_UNUSED) {
   return testCompareFiles("ppc64",
 			  "xencapsdata/xen-ppc64.xml",
 			  "xencapsdata/xen-ppc64.cpuinfo",
Index: tests/xmconfigtest.c
===================================================================
RCS file: /data/cvs/libvirt/tests/xmconfigtest.c,v
retrieving revision 1.5
diff -u -p -u -p -r1.5 xmconfigtest.c
--- tests/xmconfigtest.c	16 Jul 2007 21:30:30 -0000	1.5
+++ tests/xmconfigtest.c	17 Jul 2007 18:47:15 -0000
@@ -148,73 +148,104 @@ static int testCompareFormatXML(const ch
     return ret;
 }
 
-static int testCompareParavirtOldPVFBFormat(void *data ATTRIBUTE_UNUSED) {
+static int testCompareParavirtOldPVFBFormat(const void *data ATTRIBUTE_UNUSED) {
     return testCompareFormatXML("xmconfigdata/test-paravirt-old-pvfb.cfg",
                                 "xmconfigdata/test-paravirt-old-pvfb.xml",
                                 2);
 }
-static int testCompareParavirtOldPVFBParse(void *data ATTRIBUTE_UNUSED) {
+static int testCompareParavirtOldPVFBParse(const void *data ATTRIBUTE_UNUSED) {
     return testCompareParseXML("xmconfigdata/test-paravirt-old-pvfb.cfg",
                                "xmconfigdata/test-paravirt-old-pvfb.xml",
                                2);
 }
 
-static int testCompareParavirtNewPVFBFormat(void *data ATTRIBUTE_UNUSED) {
+static int testCompareParavirtNewPVFBFormat(const void *data ATTRIBUTE_UNUSED) {
     return testCompareFormatXML("xmconfigdata/test-paravirt-new-pvfb.cfg",
                                 "xmconfigdata/test-paravirt-new-pvfb.xml",
                                 3);
 }
-static int testCompareParavirtNewPVFBParse(void *data ATTRIBUTE_UNUSED) {
+static int testCompareParavirtNewPVFBParse(const void *data ATTRIBUTE_UNUSED) {
     return testCompareParseXML("xmconfigdata/test-paravirt-new-pvfb.cfg",
                                "xmconfigdata/test-paravirt-new-pvfb.xml",
                                3);
 }
 
-static int testCompareFullvirtOldCDROMFormat(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFullvirtOldCDROMFormat(const void *data ATTRIBUTE_UNUSED) {
     return testCompareFormatXML("xmconfigdata/test-fullvirt-old-cdrom.cfg",
                                 "xmconfigdata/test-fullvirt-old-cdrom.xml",
                                 1);
 }
-static int testCompareFullvirtOldCDROMParse(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFullvirtOldCDROMParse(const void *data ATTRIBUTE_UNUSED) {
     return testCompareParseXML("xmconfigdata/test-fullvirt-old-cdrom.cfg",
                                "xmconfigdata/test-fullvirt-old-cdrom.xml",
                                1);
 }
 
-static int testCompareFullvirtNewCDROMFormat(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFullvirtNewCDROMFormat(const void *data ATTRIBUTE_UNUSED) {
     return testCompareFormatXML("xmconfigdata/test-fullvirt-new-cdrom.cfg",
                                 "xmconfigdata/test-fullvirt-new-cdrom.xml",
                                 2);
 }
-static int testCompareFullvirtNewCDROMParse(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFullvirtNewCDROMParse(const void *data ATTRIBUTE_UNUSED) {
     return testCompareParseXML("xmconfigdata/test-fullvirt-new-cdrom.cfg",
                                "xmconfigdata/test-fullvirt-new-cdrom.xml",
                                2);
 }
 
-static int testCompareFullvirtClockUTCFormat(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFullvirtClockUTCFormat(const void *data ATTRIBUTE_UNUSED) {
     return testCompareFormatXML("xmconfigdata/test-fullvirt-utc.cfg",
                                 "xmconfigdata/test-fullvirt-utc.xml",
                                 2);
 }
 
-static int testCompareFullvirtClockUTCParse(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFullvirtClockUTCParse(const void *data ATTRIBUTE_UNUSED) {
     return testCompareParseXML("xmconfigdata/test-fullvirt-utc.cfg",
                                "xmconfigdata/test-fullvirt-utc.xml",
                                2);
 }
 
-static int testCompareFullvirtClockLocaltimeFormat(void *data ATTRIBUTE_UNUSED) {
+static int testCompareFullvirtClockLocaltimeFormat(const void *data ATTRIBUTE_UNUSED) {
     return testCompareFormatXML("xmconfigdata/test-fullvirt-localtime.cfg",
                                 "xmconfigdata/test-fullvirt-localtime.xml",
                                 2);
 }
-static int testCompareFullvirtClockLocaltimeParse(void *data ATTRIBUTE_UNUSED) {
+
+static int testCompareFullvirtClockLocaltimeParse(const void *data ATTRIBUTE_UNUSED) {
     return testCompareParseXML("xmconfigdata/test-fullvirt-localtime.cfg",
                                "xmconfigdata/test-fullvirt-localtime.xml",
                                2);
 }
 
+static int testCompareFullvirtInputUSBTabletFormat(const void *data ATTRIBUTE_UNUSED) {
+    return testCompareFormatXML("xmconfigdata/test-fullvirt-usbtablet.cfg",
+                               "xmconfigdata/test-fullvirt-usbtablet.xml",
+                               2);
+}
+
+static int testCompareFullvirtInputUSBTabletParse(const void *data ATTRIBUTE_UNUSED) {
+    return testCompareParseXML("xmconfigdata/test-fullvirt-usbtablet.cfg",
+                               "xmconfigdata/test-fullvirt-usbtablet.xml",
+                               2);
+}
+
+static int testCompareFullvirtInputUSBTabletNoBusParse(const void *data ATTRIBUTE_UNUSED) {
+    return testCompareParseXML("xmconfigdata/test-fullvirt-usbtablet.cfg",
+                               "xmconfigdata/test-fullvirt-usbtablet-no-bus.xml",
+                               2);
+}
+
+static int testCompareFullvirtInputUSBMouseFormat(const void *data ATTRIBUTE_UNUSED) {
+    return testCompareParseXML("xmconfigdata/test-fullvirt-usbmouse.cfg",
+                               "xmconfigdata/test-fullvirt-usbmouse.xml",
+                               2);
+}
+
+static int testCompareFullvirtInputUSBMouseParse(const void *data ATTRIBUTE_UNUSED) {
+    return testCompareParseXML("xmconfigdata/test-fullvirt-usbmouse.cfg",
+                               "xmconfigdata/test-fullvirt-usbmouse.xml",
+                               2);
+}
+
 
 int
 main(int argc, char **argv)
@@ -247,6 +278,12 @@ main(int argc, char **argv)
     if (virtTestRun("Fullvirt clock UTC (Format)",
                     1, testCompareFullvirtClockUTCFormat, NULL) != 0)
         ret = -1;
+    if (virtTestRun("Fullvirt USB mouse (Format)",
+                    1, testCompareFullvirtInputUSBMouseFormat, NULL) != 0)
+        ret = -1;
+    if (virtTestRun("Fullvirt USB tablet (Format)",
+                    1, testCompareFullvirtInputUSBTabletFormat, NULL) != 0)
+        ret = -1;
 
     /* XML -> Config */
     if (virtTestRun("Paravirt old PVFB (Parse)",
@@ -267,6 +304,16 @@ main(int argc, char **argv)
     if (virtTestRun("Fullvirt clock UTC (Parse)",
                     1, testCompareFullvirtClockUTCParse, NULL) != 0)
         ret = -1;
+    if (virtTestRun("Fullvirt USB mouse (Parse)",
+                    1, testCompareFullvirtInputUSBMouseParse, NULL) != 0)
+        ret = -1;
+    if (virtTestRun("Fullvirt USB tablet (Parse)",
+                    1, testCompareFullvirtInputUSBTabletParse, NULL) != 0)
+        ret = -1;
+    if (virtTestRun("Fullvirt USB tablet no bus (Parse)",
+                    1, testCompareFullvirtInputUSBTabletNoBusParse, NULL) != 0)
+        ret = -1;
+
 
     exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
 }
Index: tests/xml2sexprtest.c
===================================================================
RCS file: /data/cvs/libvirt/tests/xml2sexprtest.c,v
retrieving revision 1.13
diff -u -p -u -p -r1.13 xml2sexprtest.c
--- tests/xml2sexprtest.c	16 Jul 2007 21:30:30 -0000	1.13
+++ tests/xml2sexprtest.c	17 Jul 2007 18:47:15 -0000
@@ -30,11 +30,11 @@ static int testCompareFiles(const char *
   if (!(gotsexpr = virDomainParseXMLDesc(NULL, xmlData, &gotname, xendConfigVersion)))
     goto fail;
 
-  if (getenv("DEBUG_TESTS")) {
-      printf("Expect %d '%s'\n", (int)strlen(sexprData), sexprData);
-      printf("Actual %d '%s'\n", (int)strlen(gotsexpr), gotsexpr);
-  }
   if (strcmp(sexprData, gotsexpr)) {
+      if (getenv("DEBUG_TESTS")) {
+	printf("Expect %d '%s'\n", (int)strlen(sexprData), sexprData);
+	printf("Actual %d '%s'\n", (int)strlen(gotsexpr), gotsexpr);
+      }
       goto fail;
   }
 
@@ -202,6 +202,22 @@ static int testCompareFVclockLocaltime(v
 }
 
 
+static int testCompareFVInputUSBMouse(void *data ATTRIBUTE_UNUSED) {
+  return testCompareFiles("xml2sexprdata/xml2sexpr-fv-usbmouse.xml",
+			  "xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr",
+			  "fvtest",
+			  1);
+}
+
+static int testCompareFVInputUSBTablet(void *data ATTRIBUTE_UNUSED) {
+  return testCompareFiles("xml2sexprdata/xml2sexpr-fv-usbtablet.xml",
+			  "xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr",
+			  "fvtest",
+			  1);
+}
+
+
+
 int
 main(int argc, char **argv)
 {
@@ -290,6 +306,13 @@ main(int argc, char **argv)
 		    1, testCompareNoSourceCDRom, NULL) != 0)
 	ret = -1;
 
+    if (virtTestRun("XML-2-SEXPR FV usb mouse)",
+		    1, testCompareFVInputUSBMouse, NULL) != 0)
+	ret = -1;
+    if (virtTestRun("XML-2-SEXPR FV usb tablet)",
+		    1, testCompareFVInputUSBTablet, NULL) != 0)
+	ret = -1;
+
     if (virtTestRun("XML-2-SEXPR clock UTC",
 		    1, testCompareFVclockUTC, NULL) != 0)
 	ret = -1;
Index: tests/sexpr2xmldata/sexpr2xml-curmem.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/sexpr2xmldata/sexpr2xml-curmem.xml,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 sexpr2xml-curmem.xml
--- tests/sexpr2xmldata/sexpr2xml-curmem.xml	10 Nov 2006 11:13:01 -0000	1.1
+++ tests/sexpr2xmldata/sexpr2xml-curmem.xml	17 Jul 2007 18:47:15 -0000
@@ -25,6 +25,7 @@
       <source file='/xen/rhel5.img'/>
       <target dev='xvda:disk'/>
     </disk>
+    <input type='mouse' bus='xen'/>
     <graphics type='vnc' port='5905'/>
   </devices>
 </domain>
Index: tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 sexpr2xml-fv-localtime.xml
--- tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml	16 Jul 2007 21:30:30 -0000	1.1
+++ tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml	17 Jul 2007 18:47:15 -0000
@@ -33,6 +33,7 @@
       <target dev='hdc'/>
       <readonly/>
     </disk>
+    <input type='mouse' bus='ps2'/>
     <graphics type='vnc' port='5903' keymap='ja'/>
   </devices>
 </domain>
Index: tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.sexpr
===================================================================
RCS file: tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.sexpr
diff -N tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.sexpr
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.sexpr	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1 @@
+(domain (domid 3)(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(boot c)(cdrom '/root/boot.iso')(acpi 1)(usbdevice usbmouse)(vnc 1)(keymap ja)))(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))))
Index: tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml
===================================================================
RCS file: tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml
diff -N tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1,40 @@
+<domain type='xen' id='3'>
+  <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>
+  <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'/>
+      <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='usb'/>
+    <input type='mouse' bus='ps2'/>
+    <graphics type='vnc' port='5903' keymap='ja'/>
+  </devices>
+</domain>
Index: tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.sexpr
===================================================================
RCS file: tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.sexpr
diff -N tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.sexpr
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.sexpr	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1 @@
+(domain (domid 3)(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice usbtablet)(vnc 1)(keymap ja)))(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))))
Index: tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml
===================================================================
RCS file: tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml
diff -N tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1,40 @@
+<domain type='xen' id='3'>
+  <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>
+  <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'/>
+      <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='tablet' bus='usb'/>
+    <input type='mouse' bus='ps2'/>
+    <graphics type='vnc' port='5903' keymap='ja'/>
+  </devices>
+</domain>
Index: tests/sexpr2xmldata/sexpr2xml-fv-utc.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/sexpr2xmldata/sexpr2xml-fv-utc.xml,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 sexpr2xml-fv-utc.xml
--- tests/sexpr2xmldata/sexpr2xml-fv-utc.xml	16 Jul 2007 21:30:30 -0000	1.1
+++ tests/sexpr2xmldata/sexpr2xml-fv-utc.xml	17 Jul 2007 18:47:15 -0000
@@ -33,6 +33,7 @@
       <target dev='hdc'/>
       <readonly/>
     </disk>
+    <input type='mouse' bus='ps2'/>
     <graphics type='vnc' port='5903' keymap='ja'/>
   </devices>
 </domain>
Index: tests/sexpr2xmldata/sexpr2xml-fv-v2.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/sexpr2xmldata/sexpr2xml-fv-v2.xml,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 sexpr2xml-fv-v2.xml
--- tests/sexpr2xmldata/sexpr2xml-fv-v2.xml	16 Jul 2007 21:30:30 -0000	1.4
+++ tests/sexpr2xmldata/sexpr2xml-fv-v2.xml	17 Jul 2007 18:47:15 -0000
@@ -33,6 +33,7 @@
       <mac address='00:16:3e:1b:b1:47'/>
       <script path='vif-bridge'/>
     </interface>
+    <input type='mouse' bus='ps2'/>
     <graphics type='vnc' port='-1' keymap='ja'/>
   </devices>
 </domain>
Index: tests/sexpr2xmldata/sexpr2xml-fv.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/sexpr2xmldata/sexpr2xml-fv.xml,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 sexpr2xml-fv.xml
--- tests/sexpr2xmldata/sexpr2xml-fv.xml	16 Jul 2007 21:30:30 -0000	1.4
+++ tests/sexpr2xmldata/sexpr2xml-fv.xml	17 Jul 2007 18:47:15 -0000
@@ -33,6 +33,7 @@
       <target dev='hdc'/>
       <readonly/>
     </disk>
+    <input type='mouse' bus='ps2'/>
     <graphics type='vnc' port='5903' keymap='ja'/>
   </devices>
 </domain>
Index: tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 sexpr2xml-no-source-cdrom.xml
--- tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml	16 Jul 2007 21:30:30 -0000	1.3
+++ tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml	17 Jul 2007 18:47:15 -0000
@@ -33,6 +33,7 @@
       <target dev='hdc'/>
       <readonly/>
     </disk>
+    <input type='mouse' bus='ps2'/>
     <graphics type='vnc' port='5906'/>
   </devices>
 </domain>
Index: tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.xml,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 sexpr2xml-pv-vfb-new.xml
--- tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.xml	6 Mar 2007 20:00:17 -0000	1.3
+++ tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.xml	17 Jul 2007 18:47:15 -0000
@@ -18,6 +18,7 @@
       <source file='/root/some.img'/>
       <target dev='xvda'/>
     </disk>
+    <input type='mouse' bus='xen'/>
     <graphics type='vnc' port='-1' listen='0.0.0.0' keymap='ja'/>
   </devices>
 </domain>
Index: tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 sexpr2xml-pv-vfb-orig.xml
--- tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml	6 Mar 2007 20:00:17 -0000	1.3
+++ tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml	17 Jul 2007 18:47:15 -0000
@@ -18,6 +18,7 @@
       <source file='/root/some.img'/>
       <target dev='xvda'/>
     </disk>
+    <input type='mouse' bus='xen'/>
     <graphics type='vnc' port='-1' listen='0.0.0.0' keymap='ja'/>
   </devices>
 </domain>
Index: tests/xmconfigdata/test-fullvirt-localtime.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/xmconfigdata/test-fullvirt-localtime.xml,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 test-fullvirt-localtime.xml
--- tests/xmconfigdata/test-fullvirt-localtime.xml	16 Jul 2007 21:30:30 -0000	1.1
+++ tests/xmconfigdata/test-fullvirt-localtime.xml	17 Jul 2007 18:47:15 -0000
@@ -35,6 +35,7 @@
       <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'/>
   </devices>
 </domain>
Index: tests/xmconfigdata/test-fullvirt-new-cdrom.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/xmconfigdata/test-fullvirt-new-cdrom.xml,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 test-fullvirt-new-cdrom.xml
--- tests/xmconfigdata/test-fullvirt-new-cdrom.xml	16 Jul 2007 21:30:30 -0000	1.4
+++ tests/xmconfigdata/test-fullvirt-new-cdrom.xml	17 Jul 2007 18:47:15 -0000
@@ -35,6 +35,7 @@
       <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'/>
   </devices>
 </domain>
Index: tests/xmconfigdata/test-fullvirt-old-cdrom.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/xmconfigdata/test-fullvirt-old-cdrom.xml,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 test-fullvirt-old-cdrom.xml
--- tests/xmconfigdata/test-fullvirt-old-cdrom.xml	16 Jul 2007 21:30:30 -0000	1.4
+++ tests/xmconfigdata/test-fullvirt-old-cdrom.xml	17 Jul 2007 18:47:15 -0000
@@ -35,6 +35,7 @@
       <mac address='00:16:3E:66:92:9C'/>
       <source bridge='xenbr0'/>
     </interface>
+    <input type='mouse' bus='ps2'/>
     <graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
   </devices>
 </domain>
Index: tests/xmconfigdata/test-fullvirt-usbmouse.cfg
===================================================================
RCS file: tests/xmconfigdata/test-fullvirt-usbmouse.cfg
diff -N tests/xmconfigdata/test-fullvirt-usbmouse.cfg
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/xmconfigdata/test-fullvirt-usbmouse.cfg	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1,24 @@
+name = "XenGuest2"
+uuid = "c7a5fdb2cdaf9455926ad65c16db1809"
+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"
+usbdevice = "mouse"
+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" ]
Index: tests/xmconfigdata/test-fullvirt-usbmouse.xml
===================================================================
RCS file: tests/xmconfigdata/test-fullvirt-usbmouse.xml
diff -N tests/xmconfigdata/test-fullvirt-usbmouse.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/xmconfigdata/test-fullvirt-usbmouse.xml	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1,42 @@
+<domain type='xen'>
+  <name>XenGuest2</name>
+  <uuid>c7a5fdb2cdaf9455926ad65c16db1809</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='usb'/>
+    <input type='mouse' bus='ps2'/>
+    <graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
+  </devices>
+</domain>
Index: tests/xmconfigdata/test-fullvirt-usbtablet-no-bus.xml
===================================================================
RCS file: tests/xmconfigdata/test-fullvirt-usbtablet-no-bus.xml
diff -N tests/xmconfigdata/test-fullvirt-usbtablet-no-bus.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/xmconfigdata/test-fullvirt-usbtablet-no-bus.xml	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1,42 @@
+<domain type='xen'>
+  <name>XenGuest2</name>
+  <uuid>c7a5fdb2cdaf9455926ad65c16db1809</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='tablet'/>
+    <input type='mouse' bus='ps2'/>
+    <graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
+  </devices>
+</domain>
Index: tests/xmconfigdata/test-fullvirt-usbtablet.cfg
===================================================================
RCS file: tests/xmconfigdata/test-fullvirt-usbtablet.cfg
diff -N tests/xmconfigdata/test-fullvirt-usbtablet.cfg
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/xmconfigdata/test-fullvirt-usbtablet.cfg	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1,24 @@
+name = "XenGuest2"
+uuid = "c7a5fdb2cdaf9455926ad65c16db1809"
+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"
+usbdevice = "tablet"
+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" ]
Index: tests/xmconfigdata/test-fullvirt-usbtablet.xml
===================================================================
RCS file: tests/xmconfigdata/test-fullvirt-usbtablet.xml
diff -N tests/xmconfigdata/test-fullvirt-usbtablet.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/xmconfigdata/test-fullvirt-usbtablet.xml	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1,42 @@
+<domain type='xen'>
+  <name>XenGuest2</name>
+  <uuid>c7a5fdb2cdaf9455926ad65c16db1809</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='tablet' bus='usb'/>
+    <input type='mouse' bus='ps2'/>
+    <graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
+  </devices>
+</domain>
Index: tests/xmconfigdata/test-fullvirt-utc.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/xmconfigdata/test-fullvirt-utc.xml,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 test-fullvirt-utc.xml
--- tests/xmconfigdata/test-fullvirt-utc.xml	16 Jul 2007 21:30:30 -0000	1.1
+++ tests/xmconfigdata/test-fullvirt-utc.xml	17 Jul 2007 18:47:15 -0000
@@ -35,6 +35,7 @@
       <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'/>
   </devices>
 </domain>
Index: tests/xmconfigdata/test-paravirt-new-pvfb.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/xmconfigdata/test-paravirt-new-pvfb.xml,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 test-paravirt-new-pvfb.xml
--- tests/xmconfigdata/test-paravirt-new-pvfb.xml	19 Jan 2007 20:30:05 -0000	1.1
+++ tests/xmconfigdata/test-paravirt-new-pvfb.xml	17 Jul 2007 18:47:15 -0000
@@ -18,6 +18,7 @@
       <mac address='00:16:3E:66:94:9C'/>
       <ip address='192.168.0.9'/>
     </interface>
+    <input type='mouse' bus='xen'/>
     <graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
     <console/>
   </devices>
Index: tests/xmconfigdata/test-paravirt-old-pvfb.xml
===================================================================
RCS file: /data/cvs/libvirt/tests/xmconfigdata/test-paravirt-old-pvfb.xml,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 test-paravirt-old-pvfb.xml
--- tests/xmconfigdata/test-paravirt-old-pvfb.xml	19 Jan 2007 20:30:05 -0000	1.1
+++ tests/xmconfigdata/test-paravirt-old-pvfb.xml	17 Jul 2007 18:47:15 -0000
@@ -18,6 +18,7 @@
       <mac address='00:16:3E:66:94:9C'/>
       <ip address='192.168.0.9'/>
     </interface>
+    <input type='mouse' bus='xen'/>
     <graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
     <console/>
   </devices>
Index: tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr
===================================================================
RCS file: /data/cvs/libvirt/tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 xml2sexpr-fv-localtime.sexpr
--- tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr	16 Jul 2007 21:30:30 -0000	1.1
+++ tests/xml2sexprdata/xml2sexpr-fv-localtime.sexpr	17 Jul 2007 18:47:15 -0000
@@ -1 +1 @@
-(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(vnc 1)(localtime 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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(vnc 1)(localtime 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
Index: tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr
===================================================================
RCS file: tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr
diff -N tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1 @@
+(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice mouse)(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
Index: tests/xml2sexprdata/xml2sexpr-fv-usbmouse.xml
===================================================================
RCS file: tests/xml2sexprdata/xml2sexpr-fv-usbmouse.xml
diff -N tests/xml2sexprdata/xml2sexpr-fv-usbmouse.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/xml2sexprdata/xml2sexpr-fv-usbmouse.xml	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1,37 @@
+<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>
+    <input type='mouse' bus='usb'/>
+    <graphics type='vnc' port='5917' keymap='ja'/>
+  </devices>
+</domain>
+
Index: tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr
===================================================================
RCS file: tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr
diff -N tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1 @@
+(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(usbdevice tablet)(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
Index: tests/xml2sexprdata/xml2sexpr-fv-usbtablet.xml
===================================================================
RCS file: tests/xml2sexprdata/xml2sexpr-fv-usbtablet.xml
diff -N tests/xml2sexprdata/xml2sexpr-fv-usbtablet.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/xml2sexprdata/xml2sexpr-fv-usbtablet.xml	17 Jul 2007 18:47:15 -0000
@@ -0,0 +1,37 @@
+<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>
+    <input type='tablet' bus='usb'/>
+    <graphics type='vnc' port='5917' keymap='ja'/>
+  </devices>
+</domain>
+
Index: tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr
===================================================================
RCS file: /data/cvs/libvirt/tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 xml2sexpr-fv-utc.sexpr
--- tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr	16 Jul 2007 21:30:30 -0000	1.1
+++ tests/xml2sexprdata/xml2sexpr-fv-utc.sexpr	17 Jul 2007 18:47:15 -0000
@@ -1 +1 @@
-(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(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
Index: tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr
===================================================================
RCS file: /data/cvs/libvirt/tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr,v
retrieving revision 1.5
diff -u -p -u -p -r1.5 xml2sexpr-fv-v2.sexpr
--- tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr	6 Mar 2007 20:00:17 -0000	1.5
+++ tests/xml2sexprdata/xml2sexpr-fv-v2.sexpr	17 Jul 2007 18:47:15 -0000
@@ -1 +1 @@
-(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(acpi 1)(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(acpi 1)(usb 1)(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
Index: tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr
===================================================================
RCS file: /data/cvs/libvirt/tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 xml2sexpr-fv-vncunused.sexpr
--- tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr	6 Mar 2007 20:00:17 -0000	1.4
+++ tests/xml2sexprdata/xml2sexpr-fv-vncunused.sexpr	17 Jul 2007 18:47:15 -0000
@@ -1 +1 @@
-(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(acpi 1)(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(acpi 1)(usb 1)(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
Index: tests/xml2sexprdata/xml2sexpr-fv.sexpr
===================================================================
RCS file: /data/cvs/libvirt/tests/xml2sexprdata/xml2sexpr-fv.sexpr,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 xml2sexpr-fv.sexpr
--- tests/xml2sexprdata/xml2sexpr-fv.sexpr	7 Feb 2007 13:44:22 -0000	1.2
+++ tests/xml2sexprdata/xml2sexpr-fv.sexpr	17 Jul 2007 18:47:15 -0000
@@ -1 +1 @@
-(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(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')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(usb 1)(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
Index: tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr
===================================================================
RCS file: /data/cvs/libvirt/tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 xml2sexpr-no-source-cdrom.sexpr
--- tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr	11 Apr 2007 16:06:30 -0000	1.1
+++ tests/xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr	17 Jul 2007 18:47:15 -0000
@@ -1 +1 @@
-(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')(device_model '/usr/lib/xen/bin/qemu-dm')(vcpus 1)(boot c)(acpi 1)(apic 1)(pae 1)(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')(device_model '/usr/lib/xen/bin/qemu-dm')(vcpus 1)(boot c)(acpi 1)(apic 1)(pae 1)(usb 1)(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


More information about the libvir-list mailing list