[libvirt] [PATCH 1/7] parallels: introduce and use string constants for network types and names

Michal Privoznik mprivozn at redhat.com
Tue Mar 17 14:56:19 UTC 2015


On 17.03.2015 15:25, Maxim Nestratov wrote:
> 17.03.2015 17:15, Michal Privoznik пишет:
>> On 13.03.2015 16:52, Maxim Nestratov wrote:
>>> Signed-off-by: Maxim Nestratov <mnestratov at parallels.com>
>>> ---
>>>   src/parallels/parallels_network.c |    6 +++---
>>>   src/parallels/parallels_sdk.c     |    6 +++---
>>>   src/parallels/parallels_utils.h   |    8 +++++++-
>>>   3 files changed, 13 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/src/parallels/parallels_network.c
>>> b/src/parallels/parallels_network.c
>>> index 1d3b694..bb7ec5e 100644
>>> --- a/src/parallels/parallels_network.c
>>> +++ b/src/parallels/parallels_network.c
>>> @@ -211,12 +211,12 @@ parallelsLoadNetwork(parallelsConnPtr privconn,
>>> virJSONValuePtr jobj)
>>>           goto cleanup;
>>>       }
>>>   -    if (STREQ(tmp, "bridged")) {
>>> +    if (STREQ(tmp, PARALLELS_BRIDGED_NETWORK_TYPE)) {
>>>           def->forward.type = VIR_NETWORK_FORWARD_BRIDGE;
>>>             if (parallelsGetBridgedNetInfo(def, jobj) < 0)
>>>               goto cleanup;
>>> -    } else if (STREQ(tmp, "host-only")) {
>>> +    } else if (STREQ(tmp, PARALLELS_HOSTONLY_NETWORK_TYPE)) {
>>>           def->forward.type = VIR_NETWORK_FORWARD_NONE;
>>>   
>> How about introducing 'int parallelsNetworkTypeFromString(const char *)'
>> using our ENUM_DECL and ENUM_IMPL macros? This code could then be turned
>> into:
>>
>>      if ((def->forward.type = parallelNetworkTypeFromString(tmp)) < 0) {
>>          parallelsParseError();
>>          goto cleanup;
>>      }
>>
>>      switch((virNetworkForwardType) def->forward.type) {
>>      case VIR_NETWORK_FORWARD_BRIDGE:
>>          if (parallelsGetBridgedNetInfo(def, jobj) < 0)
>>              goto cleanup;
>>          break;
>>      case VIR_NETWORK_FORWARD_NONE:
>>          if (parallelsGetHostOnlyNetInfo(def, def->name) < 0)
>>              goto cleanup;
>>          ...
>>      }
>>
>> I find it more future proof then STREQ() spaghetti.
>>
>> Michal
> Ok. Makes sence. I'll do this in the next series version.
> 

D'oh. Now that I'm going through the code again, this patch actually
makes sense and my suggestion doesn't. The problem is, initially I
thought that @tmp holds network type in string, while in fact it holds a
network's name. And it doesn't make much sense to create an enum for
that. Although, other patches in the series need some discussion before
I can push them.

Michal




More information about the libvir-list mailing list