FD.io VPP  v19.01.3-6-g70449b9b9
Vector Packet Processing
bier_fmask_db.c File Reference
+ Include dependency graph for bier_fmask_db.c:

Go to the source code of this file.

Data Structures

struct  bier_fmask_db_t_
 Global Table of fmask objects The key into this table includes the table's key and the fmask's key, so there could be a DB per-table. More...
 

Typedefs

typedef 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, so there could be a DB per-table. More...
 

Functions

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)
 
u32 bier_fmask_db_find (index_t bti, const fib_route_path_t *rpath)
 
u32 bier_fmask_db_find_or_create_and_lock (index_t bti, const fib_route_path_t *rpath)
 
void bier_fmask_db_remove (const bier_fmask_id_t *fmid)
 
void bier_fmask_db_walk (bier_fmask_walk_fn_t fn, void *ctx)
 
clib_error_tbier_fmask_db_module_init (vlib_main_t *vm)
 

Variables

static bier_fmask_db_t bier_fmask_db
 Single fmask DB. More...
 

Typedef Documentation

◆ bier_fmask_db_t

Global Table of fmask objects The key into this table includes the table's key and the fmask's key, so there could be a DB per-table.

But it is more efficient at forwarding time to extract the fmask from a single global table which is hot in dcache.

The table's key is part of this DB key, since the fmasks therein build up their forwarding mask based on the routes that resolve through it, so cross polination would be bad.

Function Documentation

◆ bier_fmask_db_find()

u32 bier_fmask_db_find ( index_t  bti,
const fib_route_path_t rpath 
)

Definition at line 90 of file bier_fmask_db.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bier_fmask_db_find_or_create_and_lock()

u32 bier_fmask_db_find_or_create_and_lock ( index_t  bti,
const fib_route_path_t rpath 
)

Definition at line 108 of file bier_fmask_db.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bier_fmask_db_mk_key()

static void bier_fmask_db_mk_key ( index_t  bti,
const fib_route_path_t rpath,
bier_fmask_id_t key 
)
static

Definition at line 55 of file bier_fmask_db.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ bier_fmask_db_module_init()

clib_error_t* bier_fmask_db_module_init ( vlib_main_t vm)

Definition at line 168 of file bier_fmask_db.c.

◆ bier_fmask_db_remove()

void bier_fmask_db_remove ( const bier_fmask_id_t fmid)

Definition at line 138 of file bier_fmask_db.c.

+ Here is the caller graph for this function:

◆ bier_fmask_db_walk()

void bier_fmask_db_walk ( bier_fmask_walk_fn_t  fn,
void *  ctx 
)

Definition at line 155 of file bier_fmask_db.c.

◆ bier_fmask_get_index()

u32 bier_fmask_get_index ( const bier_fmask_t bfm)

Definition at line 49 of file bier_fmask_db.c.

Variable Documentation

◆ bier_fmask_db

bier_fmask_db_t bier_fmask_db
static

Single fmask DB.

Definition at line 45 of file bier_fmask_db.c.