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

Michal Privoznik mprivozn at redhat.com
Wed Jul 8 15:32:07 UTC 2020


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 ..

>           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.

Michal




More information about the libvir-list mailing list