On Sat, Nov 14, 2009 at 11:01:45PM +0100, Matthias Bolte wrote: > 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 > --- > src/esx/esx_vmx.c | 21 ++++++++++++++++++--- > tests/xml2vmxdata/xml2vmx-esx-in-the-wild-1.vmx | 2 +- > tests/xml2vmxdata/xml2vmx-esx-in-the-wild-2.vmx | 1 + > tests/xml2vmxdata/xml2vmx-esx-in-the-wild-3.vmx | 1 + > tests/xml2vmxdata/xml2vmx-esx-in-the-wild-4.vmx | 4 ++-- > tests/xml2vmxdata/xml2vmx-ethernet-bridged.vmx | 4 ++-- > tests/xml2vmxdata/xml2vmx-ethernet-custom.vmx | 4 ++-- > tests/xml2vmxdata/xml2vmx-ethernet-e1000.vmx | 4 ++-- > tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-1.vmx | 1 + > tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-2.vmx | 1 + > tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-3.vmx | 2 ++ > tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-4.vmx | 1 + > 12 files changed, 34 insertions(+), 12 deletions(-) > > diff --git a/src/esx/esx_vmx.c b/src/esx/esx_vmx.c > index 97ad43e..9a9fe0a 100644 > --- a/src/esx/esx_vmx.c > +++ b/src/esx/esx_vmx.c > @@ -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 " > diff --git a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-1.vmx b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-1.vmx > index ea14588..077d907 100644 > --- a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-1.vmx > +++ b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-1.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-2.vmx b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-2.vmx > index 05e3d46..f507548 100644 > --- a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-2.vmx > +++ b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-2.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-3.vmx b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-3.vmx > index d418475..10559fb 100644 > --- a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-3.vmx > +++ b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-3.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-4.vmx b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-4.vmx > index 68f6d6d..068f0f8 100644 > --- a/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-4.vmx > +++ b/tests/xml2vmxdata/xml2vmx-esx-in-the-wild-4.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-ethernet-bridged.vmx b/tests/xml2vmxdata/xml2vmx-ethernet-bridged.vmx > index 73ca8a8..7d9c6f7 100644 > --- a/tests/xml2vmxdata/xml2vmx-ethernet-bridged.vmx > +++ b/tests/xml2vmxdata/xml2vmx-ethernet-bridged.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-ethernet-custom.vmx b/tests/xml2vmxdata/xml2vmx-ethernet-custom.vmx > index cc42140..fb4b116 100644 > --- a/tests/xml2vmxdata/xml2vmx-ethernet-custom.vmx > +++ b/tests/xml2vmxdata/xml2vmx-ethernet-custom.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-ethernet-e1000.vmx b/tests/xml2vmxdata/xml2vmx-ethernet-e1000.vmx > index dd2c86d..3aed46c 100644 > --- a/tests/xml2vmxdata/xml2vmx-ethernet-e1000.vmx > +++ b/tests/xml2vmxdata/xml2vmx-ethernet-e1000.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-1.vmx b/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-1.vmx > index 8b2d6a4..526fe3c 100644 > --- a/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-1.vmx > +++ b/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-1.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-2.vmx b/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-2.vmx > index d811b7f..34f006d 100644 > --- a/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-2.vmx > +++ b/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-2.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-3.vmx b/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-3.vmx > index 7109fb9..a2a3575 100644 > --- a/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-3.vmx > +++ b/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-3.vmx > @@ -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" > diff --git a/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-4.vmx b/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-4.vmx > index ee9b8c9..765d35c 100644 > --- a/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-4.vmx > +++ b/tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-4.vmx > @@ -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" ACK Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list