Looks Good. Ethan
On Fri, Jul 22, 2011 at 15:32, Ben Pfaff <[email protected]> wrote: > I created this function because I thought I had three good use cases. > Unfortunately, one of them was wrong, so drop it. > --- > lib/vlan-bitmap.h | 11 ++--------- > ofproto/ofproto-dpif.c | 5 +++-- > 2 files changed, 5 insertions(+), 11 deletions(-) > > diff --git a/lib/vlan-bitmap.h b/lib/vlan-bitmap.h > index 6d74d40..092c2ca 100644 > --- a/lib/vlan-bitmap.h > +++ b/lib/vlan-bitmap.h > @@ -22,21 +22,14 @@ > > /* A "VLAN bitmap" is a 4096-bit bitmap that represents a set. A 1-bit > * indicates that the respective VLAN is a member of the set, a 0-bit > indicates > - * that it is not. There is one wrinkle: NULL indicates that every VLAN is a > - * member of the set. > + * that it is not. There is one wrinkle: NULL is a valid value that > indicates > + * either that all VLANs are or are not members, depending on the > vlan_bitmap. > * > * This is empirically a useful data structure. */ > > unsigned long *vlan_bitmap_from_array(const int64_t *vlans, size_t n_vlans); > bool vlan_bitmap_equal(const unsigned long *a, const unsigned long *b); > > -/* Returns true if 'vid', in the range [0,4095], is a member of 'vlans'. */ > -static inline bool > -vlan_bitmap_contains(const unsigned long *vlans, uint16_t vid) > -{ > - return !vlans || bitmap_is_set(vlans, vid); > -} > - > /* Returns a new copy of 'vlans'. */ > static inline unsigned long * > vlan_bitmap_clone(const unsigned long *vlans) > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c > index c88569c..2b1d5e4 100644 > --- a/ofproto/ofproto-dpif.c > +++ b/ofproto/ofproto-dpif.c > @@ -3369,7 +3369,8 @@ dst_is_duplicate(const struct dst_set *set, const > struct dst *test) > static bool > ofbundle_trunks_vlan(const struct ofbundle *bundle, uint16_t vlan) > { > - return bundle->vlan < 0 && vlan_bitmap_contains(bundle->trunks, vlan); > + return (bundle->vlan < 0 > + && (!bundle->trunks || bitmap_is_set(bundle->trunks, vlan))); > } > > static bool > @@ -3415,7 +3416,7 @@ compose_dsts(struct action_xlate_ctx *ctx, uint16_t > vlan, > static bool > vlan_is_mirrored(const struct ofmirror *m, int vlan) > { > - return vlan_bitmap_contains(m->vlans, vlan); > + return !m->vlans || bitmap_is_set(m->vlans, vlan); > } > > /* Returns true if a packet with Ethernet destination MAC 'dst' may be > mirrored > -- > 1.7.4.4 > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
