summaryrefslogtreecommitdiff
path: root/src/vmx
diff options
context:
space:
mode:
authorBastien Orivel <bastien.orivel@diateam.net>2020-07-13 16:28:53 +0200
committerMichal Privoznik <mprivozn@redhat.com>2020-07-13 18:47:44 +0200
commit454e5961abf40c14f8b6d7ee216229e68fd170bf (patch)
tree0d68b4bff2289a6f0b4b30deca7393e2627c6436 /src/vmx
parentc051e56d27a31c8645876b85b80dfdcbf46fa316 (diff)
downloadlibvirt-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.c7
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",