diff options
author | Dave Barach <dave@barachs.net> | 2018-12-03 19:07:09 -0500 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2018-12-04 12:04:37 +0000 |
commit | a5fb0ec6c3b19c5fe74f171297afe68be897548c (patch) | |
tree | cbe0f47caf86e8447d93926ea65c8425e1c10691 | |
parent | dc2e251398b196a6fa3b2287f0755330757df02a (diff) |
Add VNET_BUFFER_F_AVAIL definitions
Add a check to make sure that the vlib and vnet buffer flag bit
definitions do not overlap.
The VNET_BUFFER_F_AVAIL1...8 definitions allow out-of-tree codes to:
#define VNET_BUFFER_F_MY_USECASE VNET_BUFFER_F_AVAIL1
and so on. This avoids introducing irrelevant and/or proprietary bit
definitions into vnet/buffer.h, and hopefully minimizes merge pain for
everyone involved.
Change-Id: I5be4f61dceb81b5bfca005f6d609ade074af205b
Signed-off-by: Dave Barach <dave@barachs.net>
-rw-r--r-- | src/vlib/buffer.h | 1 | ||||
-rw-r--r-- | src/vnet/buffer.h | 26 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/vlib/buffer.h b/src/vlib/buffer.h index 02b170907ba..ceab94f25fd 100644 --- a/src/vlib/buffer.h +++ b/src/vlib/buffer.h @@ -98,6 +98,7 @@ enum /* User defined buffer flags. */ #define LOG2_VLIB_BUFFER_FLAG_USER(n) (32 - (n)) #define VLIB_BUFFER_FLAG_USER(n) (1 << LOG2_VLIB_BUFFER_FLAG_USER(n)) +#define VLIB_BUFFER_FLAGS_ALL (0x1f) /* VLIB buffer representation. */ typedef struct diff --git a/src/vnet/buffer.h b/src/vnet/buffer.h index d701e21141d..89dd84567bc 100644 --- a/src/vnet/buffer.h +++ b/src/vnet/buffer.h @@ -44,6 +44,7 @@ /** * Flags that are set in the high order bits of ((vlib_buffer*)b)->flags + * */ #define foreach_vnet_buffer_flag \ _( 1, L4_CHECKSUM_COMPUTED, "l4-cksum-computed", 1) \ @@ -64,7 +65,26 @@ _(16, L4_HDR_OFFSET_VALID, "l4_hdr_offset_valid", 0) \ _(17, FLOW_REPORT, "flow-report", 1) \ _(18, IS_DVR, "dvr", 1) \ - _(19, QOS_DATA_VALID, "qos-data-valid", 0) + _(19, QOS_DATA_VALID, "qos-data-valid", 0) \ + _(20, AVAIL1, "avail1", 1) \ + _(21, AVAIL2, "avail2", 1) \ + _(22, AVAIL3, "avail3", 1) \ + _(23, AVAIL4, "avail4", 1) \ + _(24, AVAIL5, "avail5", 1) \ + _(25, AVAIL6, "avail6", 1) \ + _(26, AVAIL7, "avail7", 1) \ + _(27, AVAIL8, "avail8", 1) + +/* + * Please allocate the FIRST available bit, redefine + * AVAIL 1 ... AVAILn-1, and remove AVAILn. Please maintain the + * VNET_BUFFER_FLAGS_ALL_AVAIL definition. + */ + +#define VNET_BUFFER_FLAGS_ALL_AVAIL \ + (VNET_BUFFER_F_AVAIL1 | VNET_BUFFER_F_AVAIL2 | VNET_BUFFER_F_AVAIL3 | \ + VNET_BUFFER_F_AVAIL4 | VNET_BUFFER_F_AVAIL5 | VNET_BUFFER_F_AVAIL6 | \ + VNET_BUFFER_F_AVAIL7) #define VNET_BUFFER_FLAGS_VLAN_BITS \ (VNET_BUFFER_F_VLAN_1_DEEP | VNET_BUFFER_F_VLAN_2_DEEP) @@ -83,6 +103,10 @@ enum #undef _ }; +/* Make sure that the vnet and vlib bits are disjoint */ +STATIC_ASSERT (((VNET_BUFFER_FLAGS_ALL_AVAIL & VLIB_BUFFER_FLAGS_ALL) == 0), + "VLIB / VNET buffer flags overlap"); + #define foreach_buffer_opaque_union_subtype \ _(ip) \ _(l2) \ |