FD.io VPP  v18.07-rc0-415-g6c78436
Vector Packet Processing
ip4_fib.c File Reference
+ Include dependency graph for ip4_fib.c:

Go to the source code of this file.

Data Structures

struct  ip4_fib_table_special_prefix_t_
 
struct  ip4_fib_show_walk_ctx_t_
 Walk show context. More...
 

Typedefs

typedef struct ip4_fib_table_special_prefix_t_ ip4_fib_table_special_prefix_t
 
typedef struct ip4_fib_show_walk_ctx_t_ ip4_fib_show_walk_ctx_t
 Walk show context. More...
 

Functions

static u32 ip4_create_fib_with_table_id (u32 table_id, fib_source_t src)
 
void ip4_fib_table_destroy (u32 fib_index)
 
u32 ip4_fib_table_find_or_create_and_lock (u32 table_id, fib_source_t src)
 Get or create an IPv4 fib. More...
 
u32 ip4_fib_table_create_and_lock (fib_source_t src)
 
u32 ip4_fib_table_get_index_for_sw_if_index (u32 sw_if_index)
 
fib_node_index_t ip4_fib_table_lookup_exact_match (const ip4_fib_t *fib, const ip4_address_t *addr, u32 len)
 
index_t ip4_fib_table_lookup_lb (ip4_fib_t *fib, const ip4_address_t *addr)
 
fib_node_index_t ip4_fib_table_lookup (const ip4_fib_t *fib, const ip4_address_t *addr, u32 len)
 
void ip4_fib_table_entry_insert (ip4_fib_t *fib, const ip4_address_t *addr, u32 len, fib_node_index_t fib_entry_index)
 
void ip4_fib_table_entry_remove (ip4_fib_t *fib, const ip4_address_t *addr, u32 len)
 
void ip4_fib_table_fwding_dpo_update (ip4_fib_t *fib, const ip4_address_t *addr, u32 len, const dpo_id_t *dpo)
 
void ip4_fib_table_fwding_dpo_remove (ip4_fib_t *fib, const ip4_address_t *addr, u32 len, const dpo_id_t *dpo, u32 cover_index)
 
void ip4_fib_table_walk (ip4_fib_t *fib, fib_table_walk_fn_t fn, void *ctx)
 Walk all entries in a FIB table N.B: This is NOT safe to deletes. More...
 
void ip4_fib_table_sub_tree_walk (ip4_fib_t *fib, const fib_prefix_t *root, fib_table_walk_fn_t fn, void *ctx)
 Walk all entries in a sub-tree of the FIB table N.B: This is NOT safe to deletes. More...
 
static fib_table_walk_rc_t ip4_fib_show_walk_cb (fib_node_index_t fib_entry_index, void *arg)
 
static void ip4_fib_table_show_all (ip4_fib_t *fib, vlib_main_t *vm)
 
static void ip4_fib_table_show_one (ip4_fib_t *fib, vlib_main_t *vm, ip4_address_t *address, u32 mask_len, int detail)
 
u8format_ip4_fib_table_memory (u8 *s, va_list *args)
 
static clib_error_tip4_show_fib (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 

Variables

static const ip4_fib_table_special_prefix_t ip4_specials []
 
static vlib_cli_command_t ip4_show_fib_command
 (constructor) VLIB_CLI_COMMAND (ip4_show_fib_command) More...
 

Typedef Documentation

Walk show context.

Function Documentation

u8* format_ip4_fib_table_memory ( u8 s,
va_list *  args 
)

Definition at line 570 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 ip4_create_fib_with_table_id ( u32  table_id,
fib_source_t  src 
)
static

Definition at line 104 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_table_walk_rc_t ip4_fib_show_walk_cb ( fib_node_index_t  fib_entry_index,
void *  arg 
)
static

Definition at line 520 of file ip4_fib.c.

+ Here is the caller graph for this function:

u32 ip4_fib_table_create_and_lock ( fib_source_t  src)

Definition at line 220 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip4_fib_table_destroy ( u32  fib_index)

Definition at line 161 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip4_fib_table_entry_insert ( ip4_fib_t fib,
const ip4_address_t addr,
u32  len,
fib_node_index_t  fib_entry_index 
)

Definition at line 316 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip4_fib_table_entry_remove ( ip4_fib_t fib,
const ip4_address_t addr,
u32  len 
)

Definition at line 351 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip4_fib_table_find_or_create_and_lock ( u32  table_id,
fib_source_t  src 
)

Get or create an IPv4 fib.

Get or create an IPv4 fib with the provided table ID.

Parameters
table_idWhen set to ~0, an arbitrary and unused fib ID is picked and can be retrieved with ret->table_id. Otherwise, the fib ID to be used to retrieve or create the desired fib.
Returns
A pointer to the retrieved or created fib.

Definition at line 205 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip4_fib_table_fwding_dpo_remove ( ip4_fib_t fib,
const ip4_address_t addr,
u32  len,
const dpo_id_t dpo,
u32  cover_index 
)

Definition at line 390 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip4_fib_table_fwding_dpo_update ( ip4_fib_t fib,
const ip4_address_t addr,
u32  len,
const dpo_id_t dpo 
)

Definition at line 381 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip4_fib_table_get_index_for_sw_if_index ( u32  sw_if_index)

Definition at line 226 of file ip4_fib.c.

+ Here is the caller graph for this function:

fib_node_index_t ip4_fib_table_lookup ( const ip4_fib_t fib,
const ip4_address_t addr,
u32  len 
)

Definition at line 293 of file ip4_fib.c.

+ Here is the caller graph for this function:

fib_node_index_t ip4_fib_table_lookup_exact_match ( const ip4_fib_t fib,
const ip4_address_t addr,
u32  len 
)

Definition at line 245 of file ip4_fib.c.

+ Here is the caller graph for this function:

index_t ip4_fib_table_lookup_lb ( ip4_fib_t fib,
const ip4_address_t addr 
)

Definition at line 269 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip4_fib_table_show_all ( ip4_fib_t fib,
vlib_main_t vm 
)
static

Definition at line 531 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip4_fib_table_show_one ( ip4_fib_t fib,
vlib_main_t vm,
ip4_address_t address,
u32  mask_len,
int  detail 
)
static

Definition at line 555 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip4_fib_table_sub_tree_walk ( ip4_fib_t fib,
const fib_prefix_t root,
fib_table_walk_fn_t  fn,
void *  ctx 
)

Walk all entries in a sub-tree of the FIB table N.B: This is NOT safe to deletes.

If you need to delete walk the whole table and store elements in a vector, then delete the elements

Definition at line 433 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip4_fib_table_walk ( ip4_fib_t fib,
fib_table_walk_fn_t  fn,
void *  ctx 
)

Walk all entries in a FIB table N.B: This is NOT safe to deletes.

If you need to delete walk the whole table and store elements in a vector, then delete the elements

Definition at line 416 of file ip4_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* ip4_show_fib ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 581 of file ip4_fib.c.

+ Here is the call graph for this function:

Variable Documentation

vlib_cli_command_t ip4_show_fib_command
static
Initial value:
= {
.path = "show ip fib",
.short_help = "show ip fib [summary] [table <table-id>] [index <fib-id>] [<ip4-addr>[/<mask>]] [mtrie] [detail]",
.function = ip4_show_fib,
}
static clib_error_t * ip4_show_fib(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: ip4_fib.c:581

(constructor) VLIB_CLI_COMMAND (ip4_show_fib_command)

Definition at line 869 of file ip4_fib.c.

const ip4_fib_table_special_prefix_t ip4_specials[]
static

Definition at line 29 of file ip4_fib.c.