api: fix handlers that explicitly depend on svm queue
[vpp.git] / src / vnet / buffer.h
index 50b94f7..317f8bb 100644 (file)
@@ -42,6 +42,9 @@
 
 #include <vlib/vlib.h>
 
+/**
+ * Flags that are set in the high order bits of ((vlib_buffer*)b)->flags
+ */
 #define foreach_vnet_buffer_field \
   _( 1, L4_CHECKSUM_COMPUTED, "l4-cksum-computed")     \
   _( 2, L4_CHECKSUM_CORRECT, "l4-cksum-correct")       \
@@ -77,6 +80,26 @@ enum
 #undef _
 };
 
+/**
+ * @brief Flags set in ((vnet_buffer(b)->flags
+ */
+#define foreach_vnet_opaque_flag \
+  _( 1, IS_DVR, "DVR-processed")
+
+enum
+{
+#define _(bit, name, v) VNET_OPAQUE_F_##name  = (1 << bit),
+  foreach_vnet_opaque_flag
+#undef _
+};
+
+enum
+{
+#define _(bit, name, v) VNET_OPAQUE_F_LOG2_##name  = bit,
+  foreach_vnet_opaque_flag
+#undef _
+};
+
 
 #define foreach_buffer_opaque_union_subtype     \
 _(ip)                                           \
@@ -92,7 +115,6 @@ _(map)                                               \
 _(map_t)                                       \
 _(ip_frag)                                     \
 _(mpls)                                                \
-_(bier)                                        \
 _(tcp)
 
 /*
@@ -112,6 +134,7 @@ typedef struct
   i16 l2_hdr_offset;
   i16 l3_hdr_offset;
   i16 l4_hdr_offset;
+  u16 flags;
 
   union
   {
@@ -168,18 +191,17 @@ typedef struct
       u8 ttl;
       u8 exp;
       u8 first;
+      /*
+       * BIER - the nubmer of bytes in the header.
+       *  the len field inthe header is not authoritative. It's the
+       * value in the table that counts.
+       */
+      struct
+      {
+       u8 n_bytes;
+      } bier;
     } mpls;
 
-    /*
-     * BIER - the nubmer of bytes in the header.
-     *  the len field inthe header is not authoritative. It's the
-     * value in the table that counts.
-     */
-    struct
-    {
-      u8 n_bytes;
-    } bier;
-
     /* ip4-in-ip6 softwire termination, only valid there */
     struct
     {