16 #ifndef __BIER_TABLE_H__ 17 #define __BIER_TABLE_H__ 29 struct bier_route_update_t_;
90 "BIER table fits on 2 cache lines");
void bier_table_route_delete(const bier_table_id_t *bti, bier_bp_t b)
void bier_table_ecmp_set_fmask(index_t bti, bier_bp_t bp, index_t bfmi)
bier_table_t * bier_table_pool
Memory pool of all the allocated tables.
void bier_table_show_all(vlib_main_t *vm, bier_show_flags_t flags)
A representation of a path as described by a route producer.
u16 bt_locks
Number of locks on the table.
index_t * bt_fmasks
f-masks in the ECMP table This is a vector sized to the appropriate number of entries given the table...
enum bier_show_flags_t_ bier_show_flags_t
Flags to control show output.
void bier_table_route_path_add(const bier_table_id_t *bti, bier_bp_t bp, fib_route_path_t *brp)
u32 mpls_label_t
A label value only, i.e.
u32 index_t
A Data-Path Object is an object that represents actions that are applied to packets are they are swit...
void(* bier_table_ecmp_walk_fn_t)(index_t btei, void *ctx)
Types and functions to walk the ECMP tables of a main table.
void bier_table_contribute_forwarding(index_t bti, dpo_id_t *dpo)
static bier_table_t * bier_table_get(index_t bti)
void bier_table_unlock(const bier_table_id_t *id)
void bier_table_route_path_remove(const bier_table_id_t *bti, bier_bp_t bp, fib_route_path_t *brp)
void(* bier_tables_walk_fn_t)(const bier_table_t *bt, void *ctx)
Types and functions to walk all the BIER Tables.
u8 * format_bier_table_entry(u8 *s, va_list *args)
int bier_table_is_main(const bier_table_t *bt)
mpls_label_t bt_ll
Save the MPLS local label associated with the table.
void bier_table_ecmp_unlock(index_t bti)
u32 bier_bp_t
A bit positon as assigned to egress PEs.
The identity of a DPO is a combination of its type and its instance number/index of objects of that t...
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
u8 * format_bier_table(u8 *s, va_list *args)
static const index_t bier_table_fwd_lookup(const bier_table_t *bt, bier_bp_t bp)
STATIC_ASSERT((sizeof(bier_table_t)<=2 *CLIB_CACHE_LINE_BYTES),"BIER table fits on 2 cache lines")
static const index_t bier_table_lookup(const bier_table_t *bt, bier_bp_t bp)
u32 fib_node_index_t
A typedef of a node index.
const bier_table_id_t * bier_table_get_id(index_t bti)
fib_node_index_t bt_lfei
The index of the lfib entry created for this table.
index_t * bt_entries
Entries in the table This is a vector sized to the appropriate number of entries given the table's su...
fib_node_index_t bt_pl
The path-list used for the ECMP-tables.
void bier_table_route_path_update(const bier_table_id_t *bti, bier_bp_t bp, fib_route_path_t *brp)
void(* bier_table_walk_fn_t)(const bier_table_t *bt, const bier_entry_t *be, void *ctx)
Types and functions to walk all the entries in one BIER Table.
index_t bier_table_lock(const bier_table_id_t *id)
bier_table_id_t bt_id
The identity/key or the table.
CLIB_CACHE_LINE_ALIGN_MARK(cacheline0)
required for pool_get_aligned.
void bier_tables_walk(bier_tables_walk_fn_t fn, void *ctx)
A BIER Table is the bit-indexed forwarding table.
#define BIER_BP_TO_INDEX(bp)
struct bier_table_t_ bier_table_t
A BIER Table is the bit-indexed forwarding table.
void bier_table_walk(const bier_table_id_t *id, bier_table_walk_fn_t fn, void *ctx)
#define CLIB_CACHE_LINE_BYTES
void bier_table_ecmp_walk(index_t bti, bier_table_ecmp_walk_fn_t fn, void *ctx)
index_t bier_table_ecmp_create_and_lock(const bier_table_id_t *id)
index_t bier_table_add_or_lock(const bier_table_id_t *id, mpls_label_t ll)