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

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




"Daniel P. Berrange" <berrange redhat com> wrote on 03/30/2010 11:55:33 AM:


> Please respond to "Daniel P. Berrange"

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


ETHERTYPE_ARP has value 0x806. From my understanding this wouldn't fit the VIR_ENUM_DECL macros. O(log(n)) is the best we could do for int lookups... but I doubt it'd be worth the effort for the small maps.

   Regards,
     Stefan

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

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