Re: [PATCH v3 2/2] network: Add code for setting network bandwidth for ethernet interfaces

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 10/8/14, 8:39 PM, "Eric Blake" <eblake@xxxxxxxxxx> wrote:

>On 10/08/2014 04:10 PM, Anirban Chakraborty wrote:
>
>>> Needs rework after my comments on 1/2.  I also wonder if this should
>>> just be folded in to that patch, and/or made into a switch statement
>>> where the compiler forces us to think about any future
>>> VIR_DOMAIN_NET_TYPE_* additions on whether they should return true or
>>> false.
>
>>> bool virNetDevSupportBandwidth(virDomainNetType type)
>>> {
>>>    switch (type) {
>>>    case VIR_DOMAIN_NET_TYPE_BRIDGE:
>>>    case VIR_DOMAIN_NET_TYPE_NETWORK:
>>>    case VIR_DOMAIN_NET_TYPE_DIRECT:
>>>    case VIR_DOMAIN_NET_TYPE_ETHERNET:
>>>        return true;
>>>    case VIR_DOMAIN_NET_TYPE_USER:
>>>    case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
>>>    case VIR_DOMAIN_NET_TYPE_SERVER:
>>>    case VIR_DOMAIN_NET_TYPE_CLIENT:
>>>    case VIR_DOMAIN_NET_TYPE_MCAST:
>>>    case VIR_DOMAIN_NET_TYPE_INTERNAL:
>>>    case VIR_DOMAIN_NET_TYPE_HOSTDEV:
>>>    case VIR_DOMAIN_NET_TYPE_LAST:
>>>        /* cover all enums to appease the compiler */ ;
>>>    }
>>>    return false;
>>> }
>> 
>> We could have the function defined with a switch, however, instead of
>> listing all the types, I could return false from the default case.
>> 
>> Something like:
>>     switch (type) {
>>     case VIR_DOMAIN_NET_TYPE_BRIDGE:
>>     case VIR_DOMAIN_NET_TYPE_NETWORK:
>>     case VIR_DOMAIN_NET_TYPE_DIRECT:
>>     case VIR_DOMAIN_NET_TYPE_ETHERNET:
>>         return true;
>> 
>>     default;
>>         return false;
>
>Alas, using a default case means the compiler can no longer tell you
>about missed cases.  I wrote my example to intentionally spell out ALL
>cases without a default, in order to ensure the compiler will loudly
>warn if we add another enum in the future.

I understood the intention. However, I was aiming for a compact code. If
we add additional enums for network type, we should be adding those types
in the above switch provided the new interface type supports bandwidth. I
do not know if we should prevent future coding error by elaborating the
current code. Forgive me, as I do not know the coding convention for
libvirt. If this is the standard practice, I¹ll change the above switch as
per your wish.

Anirban 


--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]