On 06/02/2011 10:23 AM, Heath Petersen wrote:
I have been finding that some UML command line networking parameters
are
being generated incorrectly. Attached is a patch that corrects the
problem.
For more information, see
https://bugzilla.redhat.com/show_bug.cgi?id=706295 .
Thanks for the patch. I ended up rewriting your patch, but I'm still
pushing this in your name:
diff -Naur libvirt-0.9.1.orig/src/uml/uml_conf.c libvirt-0.9.1.new/src/uml/uml_conf.c
--- libvirt-0.9.1.orig/src/uml/uml_conf.c 2011-03-01 01:03:32.000000000 -0600
+++ libvirt-0.9.1.new/src/uml/uml_conf.c 2011-05-27 20:27:26.563772975 -0500
@@ -208,6 +208,11 @@
case VIR_DOMAIN_NET_TYPE_ETHERNET:
/* ethNNN=tuntap,tapname,macaddr,gateway */
virBufferAddLit(&buf, "tuntap");
+ if (def->ifname) {
+ virBufferVSprintf(&buf, ",%s", def->ifname);
Your patch was based off of 0.9.1, but it is better to base off of
libvirt.git HEAD; there, we renamed virBufferVSprintf -> virBufferAsprintf.
+ } else {
+ virBufferAddLit(&buf, ",");
virBufferAddChar is more efficient here.
But after I made those two tweaks, I noticed that it is even more
efficient to always print the comma as part of the previous literal:
diff --git i/src/uml/uml_conf.c w/src/uml/uml_conf.c
index be902a6..0122472 100644
--- i/src/uml/uml_conf.c
+++ w/src/uml/uml_conf.c
@@ -207,11 +207,9 @@ umlBuildCommandLineNet(virConnectPtr conn,
case VIR_DOMAIN_NET_TYPE_ETHERNET:
/* ethNNN=tuntap,tapname,macaddr,gateway */
- virBufferAddLit(&buf, "tuntap");
+ virBufferAddLit(&buf, "tuntap,");
if (def->ifname) {
- virBufferAsprintf(&buf, ",%s", def->ifname);
- } else {
- virBufferAddChar(&buf, ',');
+ virBufferAdd(&buf, def->ifname, -1);
}
if (def->data.ethernet.ipaddr) {
umlReportError(VIR_ERR_INTERNAL_ERROR, "%s",
I also added you to AUTHORS; feel free to let me know if you prefer any
alternate spelling.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org