#define ETH_BUFFER_VLAN_BITS (ETH_BUFFER_VLAN_1_DEEP | \
ETH_BUFFER_VLAN_2_DEEP)
-#define LOG2_BUFFER_OUTPUT_FEAT_DONE LOG2_VLIB_BUFFER_FLAG_USER(5)
-#define BUFFER_OUTPUT_FEAT_DONE (1 << LOG2_BUFFER_OUTPUT_FEAT_DONE)
+#define LOG2_VNET_BUFFER_RTE_MBUF_VALID LOG2_VLIB_BUFFER_FLAG_USER(5)
+#define VNET_BUFFER_RTE_MBUF_VALID (1 << LOG2_VNET_BUFFER_RTE_MBUF_VALID)
#define LOG2_BUFFER_HANDOFF_NEXT_VALID LOG2_VLIB_BUFFER_FLAG_USER(6)
#define BUFFER_HANDOFF_NEXT_VALID (1 << LOG2_BUFFER_HANDOFF_NEXT_VALID)
+#define LOG2_VNET_BUFFER_RTE_MBUF_IS_VALID LOG2_VLIB_BUFFER_FLAG_USER(7)
+#define VNET_BUFFER_RTE_MBUF_IS_VALID (1 << LOG2_VNET_BUFFER_RTE_MBUF_IS_VALID)
+
#define foreach_buffer_opaque_union_subtype \
_(ethernet) \
_(ip) \
_(l2_classify) \
_(handoff) \
_(policer) \
-_(output_features) \
+_(ipsec) \
_(map) \
_(map_t) \
_(ip_frag)
/* next protocol */
u32 save_protocol;
- };
-
- /* Alternate used for local TCP packets. */
- struct
- {
- u32 listener_index;
-
- u32 established_connection_index;
-
- u32 mini_connection_index;
- u32 transmit_stamp;
- } tcp;
+ /* Rewrite length */
+ u32 save_rewrite_length;
+ };
/* ICMP */
struct
struct
{
u64 pad;
- u32 opaque_index;
u32 table_index;
+ u32 opaque_index;
u64 hash;
} l2_classify;
/* interface output features */
struct
{
- u32 ipsec_spd_index;
- u32 ipsec_sad_index;
- u32 unused[3];
- u32 bitmap;
- } output_features;
+ u32 flags;
+ u32 sad_index;
+ } ipsec;
/* vcgn udp inside input, only valid there */
struct
u16 overlay_afi;
} lisp;
+ /* Driver rx feature */
+ struct
+ {
+ u32 saved_next_index; /**< saved by drivers for short-cut */
+ u16 buffer_advance;
+ } device_input_feat;
+
u32 unused[6];
};
} vnet_buffer_opaque_t;