]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: preserve netdev MAC address during 'domxml-to-native'
authorBing Bu Cao <mars@linux.vnet.ibm.com>
Wed, 27 Nov 2013 10:52:12 +0000 (18:52 +0800)
committerLaine Stump <laine@laine.org>
Wed, 27 Nov 2013 12:20:18 +0000 (14:20 +0200)
The virsh command 'domxml-to-native' (virConnectDomainXMLToNative())
converts all network devices to "type='ethernet'" in order to make it
more likely that the generated command could be run directly from a
shell (other libvirt network device types end up referencing file
descriptors for tap devices assumed to have been created by libvirt,
which can't be done in this case).

During this conversion, all of the netdev parameters are cleared out,
then specific items are filled in after changing the type. The MAC
address was not one of these preserved items, and the result was that
mac addresses in the generated commandlines were always
00:00:00:00:00:00.

This patch saves the mac address before the conversion, then
repopulates it afterwards, so the proper mac addresses show up in the
commandline.

Signed-off-by: Bing Bu Cao <mars@linux.vnet.ibm.com>
Signed-off-by: Laine Stump <laine@laine.org>
src/qemu/qemu_driver.c

index 8a1eefdd39a81813ce00d0de2c05213fce09686e..47d8a09d027df4c1403b09a219176330bb02d8de 100644 (file)
@@ -5821,6 +5821,7 @@ static char *qemuConnectDomainXMLToNative(virConnectPtr conn,
         virDomainNetDefPtr net = def->nets[i];
         int bootIndex = net->info.bootIndex;
         char *model = net->model;
+        virMacAddr mac = net->mac;
 
         if (net->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
             int actualType = virDomainNetGetActualType(net);
@@ -5880,6 +5881,7 @@ static char *qemuConnectDomainXMLToNative(virConnectPtr conn,
         VIR_FREE(net->virtPortProfile);
         net->info.bootIndex = bootIndex;
         net->model = model;
+        net->mac = mac;
     }
 
     monitor_json = virQEMUCapsGet(qemuCaps, QEMU_CAPS_MONITOR_JSON);