
On Mon, Apr 28, 2008 at 01:44:32PM -0400, Cole Robinson wrote:
Cole Robinson wrote:
The patch below adds xml support for the soundhw option to qemu and xen. The new xml element takes the form:
Here is the updated patch. Took a bit more work to take into account the multiple models, building and parsing the xen soundhw string, checking for duplicates, etc.
The current version uses the format:
<sound model='m1'/> <sound model='m2'/>
To enable support for models m1 and m2. The code will fail if you attempt to define an xml config which specifies a model that isn't in the whitelist (currently composed of 'sb16, 'es1370', and 'pcspk'). Unknown values from a xend sexpr or config file will be silently ignored.
One question: should the value 'all' be recognized from a xen domain and translated into a <sound> tag for every item in the whitelist? 'all' is an accepted value for a xen domain, since it just passes the string to qemu. This isn't in the code but I only thought of it now.
Sigh, that's a good question. I think I'd probably turn it into a list of 3 <sound> tags, so that if they load the XML back in, it'll get changed to the canonical explicit format.
+static int qemudParseSoundXML(virConnectPtr conn, + struct qemud_vm_sound_def *sound, + xmlNodePtr node) { + + xmlChar *model = NULL; + model = xmlGetProp(node, BAD_CAST "model"); + + if (!model) { + qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, + "%s", _("missing sound model")); + goto error; + } + if ((sound->model = qemudSoundModelFromString(conn, (char *) model)) < 0) + goto error; + + if (model) + xmlFree(model); + return 0; + + error: + if (model) + xmlFree(model); + return -1; +}
IIRC, xmlFree already copes with NULL, the 'if()' bits are not required. You can check with 'make syntax-check' and see if it complains about these lines. Aside from this, it looks reasonable - I'd like to see a couple of XML configs added to the test cases for xen and QEMU to validate the parsing and formatting of XML. Regards, Dan. -- |: Red Hat, Engineering, Boston -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|