63 memset(key, 0,
sizeof(*key));
148 ASSERT (!
"remove non-existant fmask");
162 if (WALK_STOP == fn(*bfmi, ctx))
Global Table of fmask objects The key into this table includes the table's key and the fmask's key...
walk_rc_t(* bier_fmask_walk_fn_t)(index_t bfmi, void *ctx)
Walk all the BIER fmasks.
ip46_address_t frp_addr
The next-hop address.
#define hash_unset(h, key)
void bier_fmask_lock(index_t bfmi)
u32 bier_fmask_db_find_or_create_and_lock(index_t bti, const fib_route_path_t *rpath)
u32 bfmi_id
ID of the next-hop object, e.g.
A representation of a path as described by a route producer.
index_t bier_fmask_create_and_lock(const bier_fmask_id_t *fmid, const fib_route_path_t *rpath)
bier_fmask_id_t * bfm_id
The key to this fmask - used for store/lookup in the DB.
static bier_fmask_t * bier_fmask_get(u32 index)
u32 index_t
A Data-Path Object is an object that represents actions that are applied to packets are they are swit...
BIER header in non-MPLS networks.
static bier_fmask_db_t bier_fmask_db
Single fmask DB.
#define hash_set_mem(h, key, value)
void bier_fmask_db_walk(bier_fmask_walk_fn_t fn, void *ctx)
memset(h->entries, 0, sizeof(h->entries[0])*entries)
clib_error_t * bier_fmask_db_module_init(vlib_main_t *vm)
#define VLIB_INIT_FUNCTION(x)
uword * bfdb_hash
hash table for underlying storage
#define hash_foreach(key_var, value_var, h, body)
A path via a UDP encap object.
#define hash_create_mem(elts, key_bytes, value_bytes)
u32 bier_fmask_get_index(const bier_fmask_t *bfm)
static void bier_fmask_db_mk_key(index_t bti, const fib_route_path_t *rpath, bier_fmask_id_t *key)
fib_mpls_label_t * frp_label_stack
The outgoing MPLS label Stack.
void bier_fmask_db_remove(const bier_fmask_id_t *fmid)
BIER Header in MPLS networks.
struct bier_fmask_t_ * bfdb_pool
Pool for memory.
BIER header in non-MPLS networks.
A key/ID for a BIER forwarding Mas (FMask).
fib_route_path_flags_t frp_flags
flags on the path
bier_hdr_type_t bfmi_hdr_type
Type of BIER header this fmask supports.
struct bier_fmask_db_t_ bier_fmask_db_t
Global Table of fmask objects The key into this table includes the table's key and the fmask's key...
index_t bfmi_bti
The BIER table this fmask is in.
#define INDEX_INVALID
Invalid index - used when no index is known blazoned capitals INVALID speak volumes where ~0 does not...
bier_nh_type_t bfmi_nh_type
Union discriminator.
BIER Header in MPLS networks.
#define hash_get_mem(h, key)
u32 bier_fmask_db_find(index_t bti, const fib_route_path_t *rpath)
u32 frp_udp_encap_id
UDP encap ID.
ip46_address_t bfmi_nh
next-hop of the peer