[PATCH] Change the virtual NICs limit for the ESX driver

Bastien Orivel bastien.orivel at diateam.net
Wed Jul 8 15:37:01 UTC 2020



On 08/07/2020 17:32, Michal Privoznik wrote:
> On 7/7/20 4:04 PM, Bastien Orivel wrote:
>> Since the ESX virtual hardware version 4.0, virtual machines support up
>> to 10 virtual NICs instead of 4 previously. This changes the limit
>> accordingly based on the provided `virtualHW.version`.
>>
>> Signed-off-by: Bastien Orivel <bastien.orivel at diateam.net>
>> ---
>>   src/vmx/vmx.c | 20 ++++++++++++++------
>>   src/vmx/vmx.h |  2 +-
>>   2 files changed, 15 insertions(+), 7 deletions(-)
>>
>> diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
>> index 67bbe27fde..afe6fe0a1a 100644
>> --- a/src/vmx/vmx.c
>> +++ b/src/vmx/vmx.c
>> @@ -290,7 +290,7 @@ def->fss[0]...                    <=>  
>> sharedFolder0.present = "true"
>>  
>> ################################################################################
>>   ## nets
>> ########################################################################
>>   -                                        ethernet[0..3] ->
>> <controller>
>> +                                        ethernet[0..9] -> <controller>
>>                                             ethernet0.present =
>> "true"              # defaults to "false"
>>                                           ethernet0.startConnected =
>> "true"       # defaults to "true"
>> @@ -3376,7 +3376,7 @@ virVMXFormatConfig(virVMXContext *ctx,
>> virDomainXMLOptionPtr xmlopt, virDomainDe
>>         /* def:nets */
>>       for (i = 0; i < def->nnets; ++i) {
>> -        if (virVMXFormatEthernet(def->nets[i], i, &buffer) < 0)
>> +        if (virVMXFormatEthernet(def->nets[i], i, &buffer,
>> virtualHW_version) < 0)
>>               goto cleanup;
>>       }
>>   @@ -3732,15 +3732,23 @@ virVMXFormatFileSystem(virDomainFSDefPtr
>> def, int number, virBufferPtr buffer)
>>     int
>>   virVMXFormatEthernet(virDomainNetDefPtr def, int controller,
>> -                     virBufferPtr buffer)
>> +                     virBufferPtr buffer, int virtualHW_version)
>>   {
>>       char mac_string[VIR_MAC_STRING_BUFLEN];
>>       unsigned int prefix, suffix;
>>   -    if (controller < 0 || controller > 3) {
>> +    /*
>> +     * Machines older than virtualHW.version = 7 (ESXi 4.0) only
>> support up to 4
>> +     * virtual NICs. New machines support up to 10.
>> +     */
>> +    int controller_limit = 4;
>> +    if (virtualHW_version >= 7)
>> +        controller_limit = 10;
>> +
>> +    if (controller < 0 || controller > controller_limit) {
>
> This allows 4 nics for the old ESX version (if controller = 4 then
> this would be reported, but with your patch it isn't anymore), and 11
> nics for the new EXS (if controller = 10, then this again is not
> caught properly). We need to decrease those 4 and 10 and ..
>
Oof. Nice catch.
>>           virReportError(VIR_ERR_INTERNAL_ERROR,
>> -                       _("Ethernet controller index %d out of [0..3]
>> range"),
>> -                       controller);
>> +                       _("Ethernet controller index %d out of
>> [0..%d] range"),
>> +                       controller, controller_limit - 1);
>
> .. drop this -1.
>
> No need to send v2, I can fix it just before pushing, if you agree
> with suggested change.
Sounds good to me.
>
> Michal
>
Bastien




More information about the libvir-list mailing list