]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Tue Feb 14 14:50:22 EST 2007 Mark McLoughlin <markmc@redhat.com
authorMark McLoughlin <markmc@redhat.com>
Wed, 14 Feb 2007 15:51:53 +0000 (15:51 +0000)
committerMark McLoughlin <markmc@redhat.com>
Wed, 14 Feb 2007 15:51:53 +0000 (15:51 +0000)
        * qemud/conf.c: handle an unspecified MAC address,
        fix the argv freeing code in qemudBuildCommandLine()
        and fix copy and paste error in qemudGenerateXML()

ChangeLog
qemud/conf.c

index 5d57233f1a7918cbc863afa2f4120919886bf299..8e84a365e22167d1c5de234b3e552351d04dfe53 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Tue Feb 14 14:50:22 EST 2007 Mark McLoughlin <markmc@redhat.com
+
+       * qemud/conf.c: handle an unspecified MAC address, 
+       fix the argv freeing code in qemudBuildCommandLine()
+       and fix copy and paste error in qemudGenerateXML()
+       
 Tue Feb 14 14:42:38 EST 2007 Mark McLoughlin <markmc@redhat.com
 
        * src/internal.h: add virConnect->qemud_fd so that
index 026cbe2b7dfac563bde895f3f9c874b90ebc831b..a1a4b6f9bb9007ef18c5ea3e3d1113667482aeb7 100644 (file)
@@ -856,10 +856,16 @@ int qemudBuildCommandLine(struct qemud_server *server,
     } else {
         while (net) {
             char nic[3+1+7+1+17+1];
-            sprintf(nic, "nic,macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
-                    net->mac[0], net->mac[1],
-                    net->mac[2], net->mac[3],
-                    net->mac[4], net->mac[5]);
+
+            if (!net->mac[0] && !net->mac[1] && !net->mac[2] &&
+                !net->mac[3] && !net->mac[4] && !net->mac[5]) {
+                strncpy(nic, "nic", 4);
+            } else {
+                sprintf(nic, "nic,macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
+                        net->mac[0], net->mac[1],
+                        net->mac[2], net->mac[3],
+                        net->mac[4], net->mac[5]);
+            }
 
             if (!((*argv)[++n] = strdup("-net")))
                 goto no_memory;
@@ -896,8 +902,8 @@ int qemudBuildCommandLine(struct qemud_server *server,
  no_memory:
     if (argv) {
         for (i = 0 ; i < n ; i++)
-            free(argv[i]);
-        free(argv);
+            free((*argv)[i]);
+        free(*argv);
     }
     qemudReportError(server, VIR_ERR_NO_MEMORY, "argv");
     return -1;
@@ -1353,8 +1359,7 @@ char *qemudGenerateXML(struct qemud_server *server, struct qemud_vm *vm) {
     }
 
     net = vm->def.nets;
-    disk = vm->def.disks;
-    while (disk) {
+    while (net) {
         const char *types[] = {
             "user",
             "tap",
@@ -1367,7 +1372,9 @@ char *qemudGenerateXML(struct qemud_server *server, struct qemud_vm *vm) {
                               types[net->type]) < 0)
             goto no_memory;
 
-        if (qemudBufferPrintf(&buf, "      <mac address='%02x:%02x:%02x:%02x:%02x:%02x'/>\n",
+        if (net->mac[0] && net->mac[1] && net->mac[2] &&
+            net->mac[3] && net->mac[4] && net->mac[5] &&
+            qemudBufferPrintf(&buf, "      <mac address='%02x:%02x:%02x:%02x:%02x:%02x'/>\n",
                               net->mac[0], net->mac[1], net->mac[2],
                               net->mac[3], net->mac[4], net->mac[5]) < 0)
             goto no_memory;
@@ -1375,7 +1382,7 @@ char *qemudGenerateXML(struct qemud_server *server, struct qemud_vm *vm) {
         if (qemudBufferPrintf(&buf, "    </interface>\n") < 0)
             goto no_memory;
 
-        disk = disk->next;
+        net = net->next;
     }
 
     if (vm->def.graphicsType == QEMUD_GRAPHICS_VNC) {