[libvirt] [PATCH] nwfilter: cleanup return codes in nwfilter subsystem

Eric Blake eblake at redhat.com
Wed Nov 23 22:49:41 UTC 2011


On 11/23/2011 02:19 PM, Stefan Berger wrote:
> This patch cleans up return codes in the nwfilter subsystem.
> 
> Some functions in nwfilter_conf.c (validators and formatters) are
> keeping their bool return for now and I am converting their return
> code to true/false.
> 
> All other functions now return -1 on failure and 0 on success.
> 
> [I searched for all occurences of ' 1;' and checked all 'if ' and
> adapted where needed. After that I did a grep for 'NWFilter' in the source
> tree.]
> 
> ---

I compile tested this, and assume you also ran it through libvirt-TCK.
My compile run complained:

qemu/qemu_command.c: In function 'qemuNetworkIfaceConnect':
qemu/qemu_command.c:278:65: error: suggest braces around empty body in
an 'if' statement [-Werror=empty-body]

[more on this below]

> -static bool
> +static int
>  intMapGetByInt(const struct int_map *intmap, int32_t attr, const char **res)
>  {
>      int i = 0;
> -    bool found = 0;
> +    int found = false;

This should still be 'bool found', given how you assign bool values to it.

> -static bool
> +static int
>  intMapGetByString(const struct int_map *intmap, const char *str, int casecmp,
>                    int32_t *result)

Conversion of intMapGetBy{Int,String} is correct, including all callers.
 (I'm not sure if this would have been easier broken up into multiple
patches, a couple functions per patch, but don't bother splitting it now).

> @@ -367,14 +369,14 @@ virNWFilterRuleDefAddVar(virNWFilterRule
>  
>      if (VIR_REALLOC_N(nwf->vars, nwf->nvars+1) < 0) {
>          virReportOOMError();
> -        return 1;
> +        return -1;

Conversion of virNWFilterRuleDefAddVar is correct, including all callers.

> @@ -805,7 +808,7 @@ parseStringItems(const struct int_map *i
>              }
>          }
>          if (!found) {
> -            rc = 1;
> +            rc = -1;

You still have two callers to parseStringItems that merely checked for
non-zero, rather than < 0 (in tcpFlagsValidator), but no logic
regression introduced.

> @@ -1663,13 +1666,11 @@ static const virAttributes virAttr[] = {
>  };
>  
>  
> -static bool
> +static int
>  virNWMACAddressParser(const char *input,
>                        nwMACAddressPtr output)
>  {
> -    if (virParseMacAddr(input, &output->addr[0]) == 0)
> -        return 1;
> -    return 0;
> +    return virParseMacAddr(input, &output->addr[0]);

Conversion of virNWMACAddressParser is correct.

> @@ -2649,7 +2650,7 @@ _virNWFilterDefLoopDetect(virConnectPtr 
>          if (entry->include) {
>  
>              if (STREQ(filtername, entry->include->filterref)) {
> -                rc = 1;
> +                rc = -1;

conversion of [_]virNWFilterDefLoopDetect and callers looks correct.

> @@ -2736,7 +2737,7 @@ virNWFilterTriggerVMFilterRebuild(virCon
>      };
>  
>      if (!cb.skipInterfaces)
> -        return 1;
> +        return -1;
>  
>      for (i = 0; i < nCallbackDriver; i++) {
>          callbackDrvArray[i]->vmFilterRebuild(conn,

This one's tricky - you have err = cb.err, but I didn't check whether
all callers to virNWFilterConfLayerInit() pass a function that sets
cb.err to -1, or if you still need more cleanup.


> @@ -2778,7 +2779,7 @@ virNWFilterTestUnassignDef(virConnectPtr
>      nwfilter->wantRemoved = 1;
>      /* trigger the update on VMs referencing the filter */
>      if (virNWFilterTriggerVMFilterRebuild(conn))
> -        rc = 1;
> +        rc = -1;

Conversion of virNWFilterTestUnassignDef and callers looks correct.

> @@ -3297,8 +3298,8 @@ int virNWFilterConfLayerInit(virHashIter
>  
>      initialized = true;
>  
> -    if (virMutexInitRecursive(&updateMutex))
> -        return 1;
> +    if (virMutexInitRecursive(&updateMutex) < 0)
> +        return -1;

Conversion of virNWFilterConfLayerInit() and callers looks correct.

>  
>      return 0;
>  }
> Index: libvirt-acl/src/nwfilter/nwfilter_driver.c

This is as far as I got today.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20111123/7806124c/attachment-0001.sig>


More information about the libvir-list mailing list