X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fvlan-bitmap.h;h=3e2e82062dc2e099f026c75afec9e3596d786450;hb=28c5588e8e1a8d091c5d2275232c35f2968a97fa;hp=eca42fea9cf01c63ff730134b19265bc9c30fff0;hpb=0fb7b9156ac7d319a51890630857698ad1877335;p=sliver-openvswitch.git diff --git a/lib/vlan-bitmap.h b/lib/vlan-bitmap.h index eca42fea9..3e2e82062 100644 --- a/lib/vlan-bitmap.h +++ b/lib/vlan-bitmap.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2011 Nicira Networks +/* Copyright (c) 2011 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,19 +22,22 @@ /* 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); +int vlan_bitmap_from_array__(const int64_t *vlans, size_t n_vlans, + unsigned long int *b); + 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) +/* Returns a new copy of 'vlans'. */ +static inline unsigned long * +vlan_bitmap_clone(const unsigned long *vlans) { - return !vlans || bitmap_is_set(vlans, vid); + return vlans ? bitmap_clone(vlans, 4096) : NULL; } #endif /* lib/vlan-bitmap.h */