diff options
author | Bastien Orivel <bastien.orivel@diateam.net> | 2020-07-13 16:28:53 +0200 |
---|---|---|
committer | Michal Privoznik <mprivozn@redhat.com> | 2020-07-13 18:47:44 +0200 |
commit | 454e5961abf40c14f8b6d7ee216229e68fd170bf (patch) | |
tree | 0d68b4bff2289a6f0b4b30deca7393e2627c6436 /src/vmx | |
parent | c051e56d27a31c8645876b85b80dfdcbf46fa316 (diff) | |
download | libvirt-454e5961abf40c14f8b6d7ee216229e68fd170bf.tar.gz |
Add a type attribute on the mac address element
This is only used in the ESX driver where, when set to "static", it will
ignore all the checks libvirt does about the origin of the MAC address
(whether or not it's in a VMWare OUI) and forward the original one to
the ESX server telling it not to check it either.
This allows keeping a deterministic MAC address which can be useful for
licensed software which might dislike changes.
Signed-off-by: Bastien Orivel <bastien.orivel@diateam.net>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Diffstat (limited to 'src/vmx')
-rw-r--r-- | src/vmx/vmx.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index d4d66f6768..97ec84446a 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -3732,6 +3732,7 @@ virVMXFormatEthernet(virDomainNetDefPtr def, int controller, virBufferPtr buffer, int virtualHW_version) { char mac_string[VIR_MAC_STRING_BUFLEN]; + const bool staticMac = def->mac_type == VIR_DOMAIN_NET_MAC_TYPE_STATIC; unsigned int prefix, suffix; /* @@ -3829,19 +3830,19 @@ virVMXFormatEthernet(virDomainNetDefPtr def, int controller, prefix = (def->mac.addr[0] << 16) | (def->mac.addr[1] << 8) | def->mac.addr[2]; suffix = (def->mac.addr[3] << 16) | (def->mac.addr[4] << 8) | def->mac.addr[5]; - if (prefix == 0x000c29) { + if (prefix == 0x000c29 && !staticMac) { virBufferAsprintf(buffer, "ethernet%d.addressType = \"generated\"\n", controller); virBufferAsprintf(buffer, "ethernet%d.generatedAddress = \"%s\"\n", controller, mac_string); virBufferAsprintf(buffer, "ethernet%d.generatedAddressOffset = \"0\"\n", controller); - } else if (prefix == 0x005056 && suffix <= 0x3fffff) { + } else if (prefix == 0x005056 && suffix <= 0x3fffff && !staticMac) { virBufferAsprintf(buffer, "ethernet%d.addressType = \"static\"\n", controller); virBufferAsprintf(buffer, "ethernet%d.address = \"%s\"\n", controller, mac_string); - } else if (prefix == 0x005056 && suffix >= 0x800000 && suffix <= 0xbfffff) { + } else if (prefix == 0x005056 && suffix >= 0x800000 && suffix <= 0xbfffff && !staticMac) { virBufferAsprintf(buffer, "ethernet%d.addressType = \"vpx\"\n", controller); virBufferAsprintf(buffer, "ethernet%d.generatedAddress = \"%s\"\n", |