Refactor vlib_buffer flags
[vpp.git] / src / vnet / replication.h
index 5dc554c..6350aed 100644 (file)
@@ -27,8 +27,8 @@
 typedef struct
 {
   /* The entire vnet buffer header restored for each replica */
-  u8 vnet_buffer[32];          /* 16B aligned to allow vector unit copy */
-  u8 reserved[32];             /* space for future expansion of vnet buffer header */
+  u8 vnet_buffer[40];          /* 16B aligned to allow vector unit copy */
+  u8 reserved[24];             /* space for future expansion of vnet buffer header */
 
   /* feature state used during this replication */
   u64 feature_replicas;                /* feature's id for its set of replicas */
@@ -39,16 +39,17 @@ typedef struct
    * data saved from the start of replication and restored
    * at the end of replication
    */
-  u32 saved_free_list_index;   /* from vlib buffer */
+  vlib_buffer_free_list_index_t saved_free_list_index; /* from vlib buffer */
 
   /* data saved from the original packet and restored for each replica */
   u64 l2_header[3];            /*  24B (must be at least 22B for l2 packets) */
+  u32 flags;                   /* vnet buffer flags */
   u16 ip_tos;                  /* v4 and v6 */
   u16 ip4_checksum;            /* needed for v4 only */
 
   /* data saved from the vlib buffer header and restored for each replica */
   i16 current_data;            /* offset of first byte of packet in packet data */
-  u8 pad[6];                   /* to 64B */
+  u8 pad[2];                   /* to 64B */
   u8 l2_packet;                        /* flag for l2 vs l3 packet data */
 
 } replication_context_t;       /* 128B */
@@ -100,7 +101,7 @@ replication_get_ctx (vlib_buffer_t * b0)
   replication_main_t *rm = &replication_main;
 
   return replication_is_recycled (b0) ?
-    pool_elt_at_index (rm->contexts[os_get_cpu_number ()],
+    pool_elt_at_index (rm->contexts[vlib_get_thread_index ()],
                       b0->recycle_count) : 0;
 }