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