]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
vmx: support outputing the type attribute for MAC addresses
authorDaniel P. Berrangé <berrange@redhat.com>
Mon, 20 Jul 2020 15:46:09 +0000 (16:46 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Thu, 23 Jul 2020 15:11:35 +0000 (16:11 +0100)
When support for MAC addresses having a type='static|generated'
attribute was added in:

  commit 454e5961abf40c14f8b6d7ee216229e68fd170bf
  Author: Bastien Orivel <bastien.orivel@diateam.net>
  Date:   Mon Jul 13 16:28:53 2020 +0200

    Add a type attribute on the mac address element

the VMX -> XML parser was not updated. As a result while we
accept the 'type' attribute on input, we never show it again
on 'output', so we loose information during the roundtrip.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
28 files changed:
src/vmx/vmx.c
tests/vmx2xmldata/vmx2xml-case-insensitive-1.xml
tests/vmx2xmldata/vmx2xml-case-insensitive-2.xml
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-1.xml
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-2.xml
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-3.xml
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-4.xml
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-5.xml
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-6.xml
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-7.xml
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml
tests/vmx2xmldata/vmx2xml-ethernet-bridged.xml
tests/vmx2xmldata/vmx2xml-ethernet-custom.xml
tests/vmx2xmldata/vmx2xml-ethernet-e1000.xml
tests/vmx2xmldata/vmx2xml-ethernet-generated.xml
tests/vmx2xmldata/vmx2xml-ethernet-nat.xml
tests/vmx2xmldata/vmx2xml-ethernet-other.xml
tests/vmx2xmldata/vmx2xml-ethernet-static.xml
tests/vmx2xmldata/vmx2xml-ethernet-vmxnet2.xml
tests/vmx2xmldata/vmx2xml-ethernet-vpx.xml
tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.xml
tests/vmx2xmldata/vmx2xml-gsx-in-the-wild-1.xml
tests/vmx2xmldata/vmx2xml-gsx-in-the-wild-2.xml
tests/vmx2xmldata/vmx2xml-gsx-in-the-wild-3.xml
tests/vmx2xmldata/vmx2xml-gsx-in-the-wild-4.xml
tests/vmx2xmldata/vmx2xml-ws-in-the-wild-1.xml
tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.xml

index f0a45089cc7456acd5fa3e9fb07b0d46b00bdfbb..72f6a7d8dd66c0816f745d6ff118a4e1e50d0efd 100644 (file)
@@ -2535,6 +2535,9 @@ virVMXParseEthernet(virConfPtr conf, int controller, virDomainNetDefPtr *def)
     char generatedAddress_name[48] = "";
     char *generatedAddress = NULL;
 
+    char checkMACAddress_name[48] = "";
+    char *checkMACAddress = NULL;
+
     char address_name[48] = "";
     char *address = NULL;
 
@@ -2564,6 +2567,7 @@ virVMXParseEthernet(virConfPtr conf, int controller, virDomainNetDefPtr *def)
     VMX_BUILD_NAME(connectionType);
     VMX_BUILD_NAME(addressType);
     VMX_BUILD_NAME(generatedAddress);
+    VMX_BUILD_NAME(checkMACAddress);
     VMX_BUILD_NAME(address);
     VMX_BUILD_NAME(virtualDev);
     VMX_BUILD_NAME(features);
@@ -2598,7 +2602,9 @@ virVMXParseEthernet(virConfPtr conf, int controller, virDomainNetDefPtr *def)
                               true) < 0 ||
         virVMXGetConfigString(conf, generatedAddress_name, &generatedAddress,
                               true) < 0 ||
-        virVMXGetConfigString(conf, address_name, &address, true) < 0) {
+        virVMXGetConfigString(conf, address_name, &address, true) < 0 ||
+        virVMXGetConfigString(conf, checkMACAddress_name, &checkMACAddress,
+                              true) < 0) {
         goto cleanup;
     }
 
@@ -2613,6 +2619,8 @@ virVMXParseEthernet(virConfPtr conf, int controller, virDomainNetDefPtr *def)
                 goto cleanup;
             }
         }
+        if (addressType != NULL)
+            (*def)->mac_type = VIR_DOMAIN_NET_MAC_TYPE_GENERATED;
     } else if (STRCASEEQ(addressType, "static")) {
         if (address != NULL) {
             if (virMacAddrParse(address, &(*def)->mac) < 0) {
@@ -2622,6 +2630,7 @@ virVMXParseEthernet(virConfPtr conf, int controller, virDomainNetDefPtr *def)
                 goto cleanup;
             }
         }
+        (*def)->mac_type = VIR_DOMAIN_NET_MAC_TYPE_STATIC;
     } else {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Expecting VMX entry '%s' to be 'generated' or 'static' or "
index fd38cfd67f70c18850a561c98434a65bedef9d5e..7cb6413941b6a6fa189df6490c02bbb2f4596f97 100644 (file)
@@ -22,7 +22,7 @@
     </disk>
     <controller type='scsi' index='0' model='lsilogic'/>
     <interface type='bridge'>
-      <mac address='00:50:56:91:48:c7'/>
+      <mac address='00:50:56:91:48:c7' type='generated'/>
       <source bridge='VM NETWORK'/>
     </interface>
     <video>
index eb81691456e664ebe26220ee7168bfb516b155c2..188c3f3cd5e70a80a570ce19dd54a8dcc67c6015 100644 (file)
@@ -22,7 +22,7 @@
     </disk>
     <controller type='scsi' index='0' model='lsilogic'/>
     <interface type='bridge'>
-      <mac address='00:50:56:91:48:c7'/>
+      <mac address='00:50:56:91:48:c7' type='generated'/>
       <source bridge='vm network'/>
     </interface>
     <video>
index 906cfe06488794f106728ca8fa1adbb7d95bbdaa..c15275ccb9afe9d2f7d67245e5cf7c25c1f7bf0e 100644 (file)
@@ -22,7 +22,7 @@
     </disk>
     <controller type='scsi' index='0' model='lsilogic'/>
     <interface type='bridge'>
-      <mac address='00:50:56:91:48:c7'/>
+      <mac address='00:50:56:91:48:c7' type='generated'/>
       <source bridge='VM Network'/>
     </interface>
     <video>
index 2f85f82ad0995d01bc7725097a84f4fecf531116..b079808363561fdbcbf219f26aeabbcf4cd8c80f 100644 (file)
@@ -48,7 +48,7 @@
     <controller type='fdc' index='0'/>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:0c:29:3c:98:3e'/>
+      <mac address='00:0c:29:3c:98:3e' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vlance'/>
     </interface>
index 8f219165f1b88465d943a87c5945a8bc37935bf7..d05318c7d827f759529f729b448c830f08ee3682 100644 (file)
@@ -31,7 +31,7 @@
     <controller type='fdc' index='0'/>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:0c:29:f5:c3:0c'/>
+      <mac address='00:0c:29:f5:c3:0c' type='generated'/>
       <source bridge='VM Network'/>
     </interface>
     <video>
index d5b3e841b76ca5e7306dbfdd469494e77f32a16d..a8a2ac6f9712ff9380f69e0d3c7db8806641e42a 100644 (file)
     </disk>
     <controller type='scsi' index='0' model='lsilogic'/>
     <interface type='bridge'>
-      <mac address='00:50:56:91:66:d4'/>
+      <mac address='00:50:56:91:66:d4' type='generated'/>
       <source bridge='VM Network'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:50:56:91:0c:51'/>
+      <mac address='00:50:56:91:0c:51' type='generated'/>
       <source bridge='VM Switch 2'/>
     </interface>
     <serial type='file'>
index 296d48171c419e553436c032963fdc9612a0e2f5..82643e9ffe3a8c56023170d7e099d7452d33e6d0 100644 (file)
@@ -32,7 +32,7 @@
     <controller type='scsi' index='0' model='lsilogic'/>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:50:56:be:00:15'/>
+      <mac address='00:50:56:be:00:15' type='generated'/>
       <source bridge='VM-LAN'/>
       <model type='e1000'/>
     </interface>
index 19bace7cfb29004d0b1e851c94b204f16b7b406e..913bfedf30efde6ef6429e26aa8f4df836046101 100644 (file)
@@ -25,7 +25,7 @@
     <controller type='scsi' index='0' model='vmpvscsi'/>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:0c:29:2c:3a:fc'/>
+      <mac address='00:0c:29:2c:3a:fc' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
index 832c1ac8643d5ca0e256f903a2218d10d5e922dd..91913a2918e3af5f19c5bd12e1b0acc6d9104bdd 100644 (file)
@@ -24,7 +24,7 @@
     </disk>
     <controller type='scsi' index='0' model='vmpvscsi'/>
     <interface type='bridge'>
-      <mac address='00:50:56:9f:08:51'/>
+      <mac address='00:50:56:9f:08:51' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
index 2011bfb3b97e9a2b45b29ed20de2167960122a17..8276457bb3ea3300f81d7e8e408e25cca023c0b3 100644 (file)
     </disk>
     <controller type='scsi' index='0' model='vmpvscsi'/>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:01:55'/>
+      <mac address='00:1a:4a:16:01:55' type='static'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:21:85'/>
+      <mac address='00:1a:4a:16:21:85' type='generated'/>
       <source bridge='VM Network'/>
       <model type='e1000'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:21:82'/>
+      <mac address='00:1a:4a:16:21:82' type='generated'/>
       <source bridge='VM Network'/>
       <model type='e1000e'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:21:69'/>
+      <mac address='00:1a:4a:16:21:69' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:21:80'/>
+      <mac address='00:1a:4a:16:21:80' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:21:a3'/>
+      <mac address='00:1a:4a:16:21:a3' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:21:a8'/>
+      <mac address='00:1a:4a:16:21:a8' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:21:a9'/>
+      <mac address='00:1a:4a:16:21:a9' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:21:78'/>
+      <mac address='00:1a:4a:16:21:78' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:1a:4a:16:21:81'/>
+      <mac address='00:1a:4a:16:21:81' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
index fa428c1986eba9d48b44eb2354e36ded5ce29b0c..66eca400dd6eb1a1245bebf2d15f9cd83b897b25 100644 (file)
@@ -26,7 +26,7 @@
     </disk>
     <controller type='scsi' index='0' model='lsisas1068'/>
     <interface type='bridge'>
-      <mac address='00:50:56:80:b3:81'/>
+      <mac address='00:50:56:80:b3:81' type='generated'/>
       <source bridge='VM Network'/>
       <model type='vmxnet3'/>
     </interface>
index 0fe29ccd976a36b8452523bb407090c45083f318..fac5cd7bd56f244313342d6a7bf39f7b981e48c8 100644 (file)
@@ -12,7 +12,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <interface type='bridge'>
-      <mac address='00:50:56:11:22:33'/>
+      <mac address='00:50:56:11:22:33' type='static'/>
       <source bridge='VM Network'/>
     </interface>
     <video>
index e10ecd7685c06f9fa9d41d68e20e856dd7334a73..ce63c241279902d64981c4f83accc0b54366dead 100644 (file)
@@ -12,7 +12,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <interface type='bridge'>
-      <mac address='00:50:56:11:22:33'/>
+      <mac address='00:50:56:11:22:33' type='static'/>
       <source bridge='VM Network'/>
       <target dev='vmnet7'/>
     </interface>
index d497a3836f7c822d18499de3e5c75d64fc704604..534d35e3529796cbe2eaaebe4d582f79d184d58a 100644 (file)
@@ -12,7 +12,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <interface type='bridge'>
-      <mac address='00:50:56:11:22:33'/>
+      <mac address='00:50:56:11:22:33' type='static'/>
       <source bridge='VM Network'/>
       <model type='e1000'/>
     </interface>
index 23b54c81c922fbb4567f9afb9665c9cda9872417..3fbc013f216dbd27bd1b99b5f696896bf7f974a3 100644 (file)
@@ -12,7 +12,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <interface type='bridge'>
-      <mac address='00:0c:29:11:22:33'/>
+      <mac address='00:0c:29:11:22:33' type='generated'/>
       <source bridge='VM Network'/>
     </interface>
     <video>
index 562ddfc0ca3416948e8ccfb19cd4ff999c9ac3a3..af721e305923bea43738ba0050fcb07b4ac7ad4c 100644 (file)
@@ -12,7 +12,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <interface type='user'>
-      <mac address='00:50:56:11:22:33'/>
+      <mac address='00:50:56:11:22:33' type='static'/>
     </interface>
     <video>
       <model type='vmvga' vram='4096' primary='yes'/>
index e7abad0724013b0a34ae8e4ad8fa25f777ab221c..b90dfe5d9b5e4a25e250e3f761530172098e0445 100644 (file)
@@ -12,7 +12,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <interface type='bridge'>
-      <mac address='00:12:34:56:78:90'/>
+      <mac address='00:12:34:56:78:90' type='static'/>
       <source bridge='VM Network'/>
     </interface>
     <video>
index 0fe29ccd976a36b8452523bb407090c45083f318..fac5cd7bd56f244313342d6a7bf39f7b981e48c8 100644 (file)
@@ -12,7 +12,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <interface type='bridge'>
-      <mac address='00:50:56:11:22:33'/>
+      <mac address='00:50:56:11:22:33' type='static'/>
       <source bridge='VM Network'/>
     </interface>
     <video>
index bbe7dfd37822c86d57368cd9211eb841c99eee71..54c9283989bd04569e225f2cc3716a66c7ede35f 100644 (file)
@@ -12,7 +12,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <interface type='bridge'>
-      <mac address='00:50:56:11:22:33'/>
+      <mac address='00:50:56:11:22:33' type='static'/>
       <source bridge='VM Network'/>
       <model type='vmxnet2'/>
     </interface>
index 5dbdb5227e4f9bf6c44de38f2ebce9617798ff98..c75d52f5b231395ac03b9bab6ef71691abe4649f 100644 (file)
@@ -12,7 +12,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <interface type='bridge'>
-      <mac address='00:50:56:87:65:43'/>
+      <mac address='00:50:56:87:65:43' type='generated'/>
       <source bridge='VM Network'/>
     </interface>
     <video>
index cfc0d959607f72eb30a3a345bce4f425c57016c5..2dd46eb2b1618aa25c3bdd1d6ad7eddf2bdbad80 100644 (file)
     <controller type='scsi' index='0' model='buslogic'/>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:0c:29:3b:64:ea'/>
+      <mac address='00:0c:29:3b:64:ea' type='generated'/>
       <source bridge=''/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:0c:29:3b:64:f4'/>
+      <mac address='00:0c:29:3b:64:f4' type='generated'/>
       <source bridge=''/>
     </interface>
     <video>
index e507cfc2f479ed46eacbf0068a36a52ced5567b3..62ec191c82a4a5259a836da66aaa7dd1cf71517e 100644 (file)
@@ -19,7 +19,7 @@
     </disk>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:0c:29:d6:2b:d3'/>
+      <mac address='00:0c:29:d6:2b:d3' type='generated'/>
       <source bridge='net1'/>
       <target dev='/dev/vmnet1'/>
     </interface>
index 39e89bb20448e2724a198cee1b8b8575cd6c5f52..906e4657ca7f2c0316e094749d7d07dd60fcfb3a 100644 (file)
@@ -19,7 +19,7 @@
     </disk>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:0c:29:d6:cb:a4'/>
+      <mac address='00:0c:29:d6:cb:a4' type='generated'/>
       <source bridge='net1'/>
       <target dev='/dev/vmnet1'/>
     </interface>
index 51101ded2394f570703d70ff0a5b778996592250..61812851e1ffa2f923b700a2e14dff487caae389 100644 (file)
     </disk>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:0c:29:c4:be:5a'/>
+      <mac address='00:0c:29:c4:be:5a' type='generated'/>
       <source bridge='net1'/>
       <target dev='/dev/vmnet1'/>
     </interface>
     <interface type='bridge'>
-      <mac address='00:0c:29:c4:be:64'/>
+      <mac address='00:0c:29:c4:be:64' type='generated'/>
       <source bridge='net2'/>
       <target dev='/dev/vmnet2'/>
     </interface>
index 849367a52d9e97b828029f43343995be92e94861..a65a7d137ffea1788980619ba55c57724aec4210 100644 (file)
@@ -19,7 +19,7 @@
     </disk>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:0c:29:c5:e3:5d'/>
+      <mac address='00:0c:29:c5:e3:5d' type='generated'/>
       <source bridge='net2'/>
       <target dev='/dev/vmnet2'/>
     </interface>
index 9ea6bd754d6892f4446eb3b874e867c2793b4de7..9901033bb9f03f83cc0c19b8062573cd73ace0a0 100644 (file)
@@ -25,7 +25,7 @@
     <controller type='scsi' index='0' model='lsilogic'/>
     <controller type='ide' index='0'/>
     <interface type='user'>
-      <mac address='00:50:56:2f:d3:46'/>
+      <mac address='00:50:56:2f:d3:46' type='static'/>
       <model type='e1000'/>
     </interface>
     <video>
index ce8f802f88c82dc7481bdca74544bd4ea6ed05ac..628dfbaff0ab4d7bcd43aec05d36d02d6b4a915a 100644 (file)
@@ -25,7 +25,7 @@
     <controller type='scsi' index='0' model='lsilogic'/>
     <controller type='ide' index='0'/>
     <interface type='bridge'>
-      <mac address='00:50:56:2f:d3:46'/>
+      <mac address='00:50:56:2f:d3:46' type='static'/>
       <source bridge=''/>
       <model type='e1000'/>
     </interface>