]> xenbits.xensource.com Git - libvirt.git/commitdiff
esx: Fix MAC address formatting
authorMatthias Bolte <matthias.bolte@googlemail.com>
Sat, 14 Nov 2009 18:51:05 +0000 (19:51 +0100)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Sun, 15 Nov 2009 14:22:01 +0000 (15:22 +0100)
VMware uses two MAC address prefixes: 00:0c:29 and 00:50:56. The 00:0c:29
prefix is used for ESX server generated addresses. The 00:50:56 prefix is
split into two parts. MAC addresses above 00:50:56:3f:ff:ff are generated
by a vCenter. The rest of the 00:50:56 prefix can be assigned manually.
Any MAC address within the 00:0c:29 and 00:50:56 prefix can be specified
in a domain XML config and the driver will handle the details internally.

* src/esx/esx_vmx.c: fix MAC address formatting
* tests/xml2vmxdata/*: update test files accordingly

12 files changed:
src/esx/esx_vmx.c
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-1.vmx
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-2.vmx
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-3.vmx
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-4.vmx
tests/xml2vmxdata/xml2vmx-ethernet-bridged.vmx
tests/xml2vmxdata/xml2vmx-ethernet-custom.vmx
tests/xml2vmxdata/xml2vmx-ethernet-e1000.vmx
tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-1.vmx
tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-2.vmx
tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-3.vmx
tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-4.vmx

index 97ad43ebfc557b9af1d66a213d818ba900bf6334..9a9fe0a270a0188a0e43bcdf37f4bb5d0554cb3c 100644 (file)
@@ -277,8 +277,10 @@ def->nets[0]...
                                         ethernet0.addressType = "vpx"           # default to "generated"
 ->mac = <value>                   <=>   ethernet0.generatedAddress = "<value>"
 
-                                                                                # 00:0c:29 prefix for autogenerated mac's
+                                                                                # 00:0c:29 prefix for autogenerated mac's -> ethernet0.addressType = "generated"
                                                                                 # 00:50:56 prefix for manual configured mac's
+                                                                                #          00:50:56:00:00:00 - 00:50:56:3f:ff:ff -> ethernet0.addressType = "static"
+                                                                                #          00:50:56:40:00:00 - 00:50:56:ff:ff:ff -> ethernet0.addressType = "vpx"
                                                                                 # 00:05:69 old prefix from esx 1.5
 
 
@@ -2687,12 +2689,25 @@ esxVMX_FormatEthernet(virConnectPtr conn, virDomainNetDefPtr def,
 
     virFormatMacAddr(def->mac, mac_string);
 
-    if ((def->mac[0] == 0x00 && def->mac[1] == 0x0c && def->mac[2] == 0x29) ||
-        (def->mac[0] == 0x00 && def->mac[1] == 0x50 && def->mac[2] == 0x56)) {
+    if (def->mac[0] == 0x00 && def->mac[1] == 0x0c && def->mac[2] == 0x29) {
         virBufferVSprintf(buffer, "ethernet%d.addressType = \"generated\"\n",
                           controller);
         virBufferVSprintf(buffer, "ethernet%d.generatedAddress = \"%s\"\n",
                           controller, mac_string);
+        virBufferVSprintf(buffer, "ethernet%d.generatedAddressOffset = \"0\"\n",
+                          controller);
+    } else if (def->mac[0] == 0x00 && def->mac[1] == 0x50 && def->mac[2] == 0x56) {
+        if (def->mac[3] <= 0x3f) {
+            virBufferVSprintf(buffer, "ethernet%d.addressType = \"static\"\n",
+                              controller);
+            virBufferVSprintf(buffer, "ethernet%d.address = \"%s\"\n",
+                              controller, mac_string);
+        } else {
+            virBufferVSprintf(buffer, "ethernet%d.addressType = \"vpx\"\n",
+                              controller);
+            virBufferVSprintf(buffer, "ethernet%d.generatedAddress = \"%s\"\n",
+                              controller, mac_string);
+        }
     } else {
         ESX_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
                   "Unsupported MAC address prefix '%02X:%02X:%02X', expecting "
index ea14588c9894b6e4a14ea71b90a9765863a3f2bf..077d9076b3ecce73ff6434d2488f0e186ebd21f7 100644 (file)
@@ -13,5 +13,5 @@ scsi0:0.fileName = "/vmfs/volumes/498076b2-02796c1a-ef5b-000ae484a6a3/Fedora11/F
 ethernet0.present = "true"
 ethernet0.networkName = "VM Network"
 ethernet0.connectionType = "bridged"
-ethernet0.addressType = "generated"
+ethernet0.addressType = "vpx"
 ethernet0.generatedAddress = "00:50:56:91:48:C7"
index 05e3d4675a80a125d854810a0a75d69e4739da57..f50754869009a44a528a2a4ea967443e21fe591c 100644 (file)
@@ -36,3 +36,4 @@ ethernet0.networkName = "VM Network"
 ethernet0.connectionType = "bridged"
 ethernet0.addressType = "generated"
 ethernet0.generatedAddress = "00:0C:29:3C:98:3E"
+ethernet0.generatedAddressOffset = "0"
index d418475bd22f78821db4fbb562b66ee792654238..10559fbc2ef8d1fd57af42bef3a156c77de5aa95 100644 (file)
@@ -22,3 +22,4 @@ ethernet0.networkName = "VM Network"
 ethernet0.connectionType = "bridged"
 ethernet0.addressType = "generated"
 ethernet0.generatedAddress = "00:0C:29:F5:C3:0C"
+ethernet0.generatedAddressOffset = "0"
index 68f6d6d308f4409af8cc8e8d4acfd872d4790d0d..068f0f87a67ceb2fa6ea99a9c06e93d0db9c2248 100644 (file)
@@ -13,12 +13,12 @@ scsi0:0.fileName = "/vmfs/volumes/498076b2-02796c1a-ef5b-000ae484a6a3/virtMonSer
 ethernet0.present = "true"
 ethernet0.networkName = "VM Network"
 ethernet0.connectionType = "bridged"
-ethernet0.addressType = "generated"
+ethernet0.addressType = "vpx"
 ethernet0.generatedAddress = "00:50:56:91:66:D4"
 ethernet1.present = "true"
 ethernet1.networkName = "VM Switch 2"
 ethernet1.connectionType = "bridged"
-ethernet1.addressType = "generated"
+ethernet1.addressType = "vpx"
 ethernet1.generatedAddress = "00:50:56:91:0C:51"
 serial0.present = "true"
 serial0.fileType = "file"
index 73ca8a85040408946028bc3de07bb7198ab8c211..7d9c6f7a6ddb79b4f3fdd5f3d3bff5089ef9b23c 100644 (file)
@@ -8,5 +8,5 @@ numvcpus = "1"
 ethernet0.present = "true"
 ethernet0.networkName = "VM Network"
 ethernet0.connectionType = "bridged"
-ethernet0.addressType = "generated"
-ethernet0.generatedAddress = "00:50:56:11:22:33"
+ethernet0.addressType = "static"
+ethernet0.address = "00:50:56:11:22:33"
index cc42140b1d54ea8924ff0cc40f6f54b2b8fac7f7..fb4b116f3f35a3b89ff82336cf7bf4b40dfc87c2 100644 (file)
@@ -9,5 +9,5 @@ ethernet0.present = "true"
 ethernet0.networkName = "VM Network"
 ethernet0.connectionType = "custom"
 ethernet0.vnet = "vmnet7"
-ethernet0.addressType = "generated"
-ethernet0.generatedAddress = "00:50:56:11:22:33"
+ethernet0.addressType = "static"
+ethernet0.address = "00:50:56:11:22:33"
index dd2c86d93fa1d1da6daf0fbab30157a9654950df..3aed46cad4907f761b2b500c4716491e2a5ccada 100644 (file)
@@ -9,5 +9,5 @@ ethernet0.present = "true"
 ethernet0.virtualDev = "e1000"
 ethernet0.networkName = "VM Network"
 ethernet0.connectionType = "bridged"
-ethernet0.addressType = "generated"
-ethernet0.generatedAddress = "00:50:56:11:22:33"
+ethernet0.addressType = "static"
+ethernet0.address = "00:50:56:11:22:33"
index 8b2d6a45bcaacf727831feac99c91ef33db1ec48..526fe3c4c96dd9bbfc30f40db99e8b54f1a982a9 100644 (file)
@@ -14,3 +14,4 @@ ethernet0.connectionType = "custom"
 ethernet0.vnet = "/dev/vmnet1"
 ethernet0.addressType = "generated"
 ethernet0.generatedAddress = "00:0C:29:D6:2B:D3"
+ethernet0.generatedAddressOffset = "0"
index d811b7f754f3772400e26ada0005d7f50c7e1bed..34f006dc0163dc1c63c43bbb63c89a4e979baa6f 100644 (file)
@@ -14,3 +14,4 @@ ethernet0.connectionType = "custom"
 ethernet0.vnet = "/dev/vmnet1"
 ethernet0.addressType = "generated"
 ethernet0.generatedAddress = "00:0C:29:D6:CB:A4"
+ethernet0.generatedAddressOffset = "0"
index 7109fb9a142d63e86bc59d3245ddba3decbf4479..a2a35754a1be662fb3b173fc0508ead4646eca0d 100644 (file)
@@ -14,9 +14,11 @@ ethernet0.connectionType = "custom"
 ethernet0.vnet = "/dev/vmnet1"
 ethernet0.addressType = "generated"
 ethernet0.generatedAddress = "00:0C:29:C4:BE:5A"
+ethernet0.generatedAddressOffset = "0"
 ethernet1.present = "true"
 ethernet1.networkName = "net2"
 ethernet1.connectionType = "custom"
 ethernet1.vnet = "/dev/vmnet2"
 ethernet1.addressType = "generated"
 ethernet1.generatedAddress = "00:0C:29:C4:BE:64"
+ethernet1.generatedAddressOffset = "0"
index ee9b8c9f05477e27dd0aab57219a12bccc5c2995..765d35c240a8480a2a3e75f27457123823fe6d47 100644 (file)
@@ -14,3 +14,4 @@ ethernet0.connectionType = "custom"
 ethernet0.vnet = "/dev/vmnet2"
 ethernet0.addressType = "generated"
 ethernet0.generatedAddress = "00:0C:29:C5:E3:5D"
+ethernet0.generatedAddressOffset = "0"