X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdpo%2Freplicate_dpo.h;h=70faef3e28f74cd76d36da5abafb6c52e899976f;hb=a342da22f35676114ca928c65b0219fac8009f7a;hp=ccb25630e16e99ff41325e219bcc7a9548c66949;hpb=2303cb181b51f63c909cd506125c1f832432865a;p=vpp.git diff --git a/src/vnet/dpo/replicate_dpo.h b/src/vnet/dpo/replicate_dpo.h index ccb25630e16..70faef3e28f 100644 --- a/src/vnet/dpo/replicate_dpo.h +++ b/src/vnet/dpo/replicate_dpo.h @@ -46,12 +46,27 @@ extern replicate_main_t replicate_main; */ #define REP_NUM_INLINE_BUCKETS 4 +/** + * Flags on the replicate DPO + */ +typedef enum replicate_flags_t_ +{ + REPLICATE_FLAGS_NONE, + REPLICATE_FLAGS_HAS_LOCAL, +} __clib_packed replicate_flags_t; + /** * The FIB DPO provieds; * - load-balancing over the next DPOs in the chain/graph * - per-route counters */ typedef struct replicate_t_ { + /** + * required for pool_get_aligned. + * memebers used in the switch path come first! + */ + CLIB_CACHE_LINE_ALIGN_MARK(cacheline0); + /** * number of buckets in the replicate. */ @@ -64,6 +79,11 @@ typedef struct replicate_t_ { */ dpo_proto_t rep_proto; + /** + * Flags specifying the replicate properties/behaviour + */ + replicate_flags_t rep_flags; + /** * The number of locks, which is approximately the number of users, * of this load-balance. @@ -115,6 +135,9 @@ extern int replicate_is_drop(const dpo_id_t *dpo); extern u16 replicate_n_buckets(index_t repi); +extern index_t replicate_dup(replicate_flags_t flags, + index_t repi); + /** * The encapsulation breakages are for fast DP access */