[libvirt] [PATCH] nwfilter: Make entries in a int-2-string map more readable

Daniel P. Berrange berrange at redhat.com
Tue Mar 30 15:55:33 UTC 2010


On Tue, Mar 30, 2010 at 11:26:47AM -0400, Stefan Berger wrote:
> A cosmetic change that makes the entries in the int-2-string maps look
> more readable. Add some missing entries.
> 
> Signed-off-by: Stefan Berger <stefanb at us.ibm.com>
> 
> 
> ---
>  src/conf/nwfilter_conf.c |   97 +++++++++++++----------------------------------
>  1 file changed, 28 insertions(+), 69 deletions(-)
> 
> Index: libvirt-acl/src/conf/nwfilter_conf.c
> ===================================================================
> --- libvirt-acl.orig/src/conf/nwfilter_conf.c
> +++ libvirt-acl/src/conf/nwfilter_conf.c
> @@ -105,6 +105,9 @@ struct int_map {
>      const char *val;
>  };
>  
> +#define INTMAP_ENTRY(ATT, VAL) { .attr = ATT, .val = VAL }
> +#define INTMAP_ENTRY_LAST      { .val = NULL }
> +
>  
>  /*
>   * only one filter update allowed
> @@ -388,18 +391,10 @@ struct _virXMLAttr2Struct
>  
>  
>  static const struct int_map macProtoMap[] = {
> -    {
> -      .attr = ETHERTYPE_ARP,
> -      .val  = "arp",
> -    }, {
> -      .attr = ETHERTYPE_IP,
> -      .val  = "ipv4",
> -    }, {
> -      .attr = ETHERTYPE_IPV6,
> -      .val  = "ipv6",
> -    }, {
> -      .val  = NULL,
> -    }
> +    INTMAP_ENTRY(ETHERTYPE_ARP , "arp"),
> +    INTMAP_ENTRY(ETHERTYPE_IP  , "ipv4"),
> +    INTMAP_ENTRY(ETHERTYPE_IPV6, "ipv6"),
> +    INTMAP_ENTRY_LAST
>  };

This should all really be replaced with a standard call to VIR_ENUM_DECL + 
VIR_ENUM_IMPL which do compile time validation that you have the correct
number of strings to match the enum, and allow O(1) int to string conversion,
though string to int is still O(n).

Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list