diff options
Diffstat (limited to 'src/vnet/dpo/dvr_dpo.h')
-rw-r--r-- | src/vnet/dpo/dvr_dpo.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/vnet/dpo/dvr_dpo.h b/src/vnet/dpo/dvr_dpo.h index 669c49201c8..4fef2811b10 100644 --- a/src/vnet/dpo/dvr_dpo.h +++ b/src/vnet/dpo/dvr_dpo.h @@ -19,6 +19,15 @@ #include <vnet/dpo/dpo.h> /** + * Control how the reinject is performed + */ +typedef enum dvr_dpo_reinject_t_ +{ + DVR_REINJECT_L2, + DVR_REINJECT_L3, +} __clib_packed dvr_dpo_reinject_t; + +/** * @brief * The DVR DPO. Used as the resolving object for a DVR route. * This is used, in place of the usual L3 Adjacency, to retransmit @@ -40,11 +49,19 @@ typedef struct dvr_dpo_t_ dpo_proto_t dd_proto; /** + * Control for how the re-inject is performed + */ + dvr_dpo_reinject_t dd_reinject; + + /** * number of locks. */ u16 dd_locks; } dvr_dpo_t; +/* 8 bytes is a factor of cache line size so this struct will never span */ +STATIC_ASSERT_SIZEOF(dvr_dpo_t, 8); + extern void dvr_dpo_add_or_lock (u32 sw_if_index, dpo_proto_t dproto, dpo_id_t *dpo); |