FD.io VPP  v18.10-32-g1161dda
Vector Packet Processing
ip6_fib.c File Reference
+ Include dependency graph for ip6_fib.c:

Go to the source code of this file.

Data Structures

struct  ip6_fib_walk_ctx_t_
 Context when walking the IPv6 table. More...
 
struct  ip6_fib_show_ctx_t_
 
struct  count_routes_in_fib_at_prefix_length_arg_t
 

Typedefs

typedef struct ip6_fib_walk_ctx_t_ ip6_fib_walk_ctx_t
 Context when walking the IPv6 table. More...
 
typedef struct ip6_fib_show_ctx_t_ ip6_fib_show_ctx_t
 

Functions

static void vnet_ip6_fib_init (u32 fib_index)
 
static u32 create_fib_with_table_id (u32 table_id, fib_source_t src, fib_table_flags_t flags, u8 *desc)
 
u32 ip6_fib_table_find_or_create_and_lock (u32 table_id, fib_source_t src)
 Get or create an IPv6 fib. More...
 
u32 ip6_fib_table_create_and_lock (fib_source_t src, fib_table_flags_t flags, u8 *desc)
 
void ip6_fib_table_destroy (u32 fib_index)
 
fib_node_index_t ip6_fib_table_lookup (u32 fib_index, const ip6_address_t *addr, u32 len)
 
fib_node_index_t ip6_fib_table_lookup_exact_match (u32 fib_index, const ip6_address_t *addr, u32 len)
 
static void compute_prefix_lengths_in_search_order (ip6_fib_table_instance_t *table)
 
void ip6_fib_table_entry_remove (u32 fib_index, const ip6_address_t *addr, u32 len)
 
void ip6_fib_table_entry_insert (u32 fib_index, const ip6_address_t *addr, u32 len, fib_node_index_t fib_entry_index)
 
u32 ip6_fib_table_fwding_lookup_with_if_index (ip6_main_t *im, u32 sw_if_index, const ip6_address_t *dst)
 
u32 ip6_fib_table_get_index_for_sw_if_index (u32 sw_if_index)
 
void ip6_fib_table_fwding_dpo_update (u32 fib_index, const ip6_address_t *addr, u32 len, const dpo_id_t *dpo)
 
void ip6_fib_table_fwding_dpo_remove (u32 fib_index, const ip6_address_t *addr, u32 len, const dpo_id_t *dpo)
 
static int ip6_fib_walk_cb (clib_bihash_kv_24_8_t *kvp, void *arg)
 
void ip6_fib_table_walk (u32 fib_index, fib_table_walk_fn_t fn, void *arg)
 Walk all entries in a FIB table N.B: This is NOT safe to deletes. More...
 
void ip6_fib_table_sub_tree_walk (u32 fib_index, const fib_prefix_t *root, fib_table_walk_fn_t fn, void *arg)
 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 ip6_fib_table_show_walk (fib_node_index_t fib_entry_index, void *arg)
 
static void ip6_fib_table_show_all (ip6_fib_t *fib, vlib_main_t *vm)
 
static void ip6_fib_table_show_one (ip6_fib_t *fib, vlib_main_t *vm, ip6_address_t *address, u32 mask_len, int detail)
 
u8format_ip6_fib_table_memory (u8 *s, va_list *args)
 
static void count_routes_in_fib_at_prefix_length (BVT(clib_bihash_kv)*kvp, void *arg)
 
static clib_error_tip6_show_fib (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 

Variables

static vlib_cli_command_t ip6_show_fib_command
 (constructor) VLIB_CLI_COMMAND (ip6_show_fib_command) More...
 

Typedef Documentation

Context when walking the IPv6 table.

Since all VRFs are in the same hash table, we need to filter only those we need as we walk

Function Documentation

static void compute_prefix_lengths_in_search_order ( ip6_fib_table_instance_t table)
static

Definition at line 241 of file ip6_fib.c.

+ Here is the caller graph for this function:

static void count_routes_in_fib_at_prefix_length ( BVT(clib_bihash_kv)*  kvp,
void *  arg 
)
static

Definition at line 595 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 create_fib_with_table_id ( u32  table_id,
fib_source_t  src,
fib_table_flags_t  flags,
u8 desc 
)
static

Definition at line 55 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_ip6_fib_table_memory ( u8 s,
va_list *  args 
)

Definition at line 569 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip6_fib_table_create_and_lock ( fib_source_t  src,
fib_table_flags_t  flags,
u8 desc 
)

Definition at line 110 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_fib_table_destroy ( u32  fib_index)

Definition at line 118 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_fib_table_entry_insert ( u32  fib_index,
const ip6_address_t addr,
u32  len,
fib_node_index_t  fib_entry_index 
)

Definition at line 285 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_fib_table_entry_remove ( u32  fib_index,
const ip6_address_t addr,
u32  len 
)

Definition at line 254 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip6_fib_table_find_or_create_and_lock ( u32  table_id,
fib_source_t  src 
)

Get or create an IPv6 fib.

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

Parameters
imip4_main pointer.
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 93 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_fib_table_fwding_dpo_remove ( u32  fib_index,
const ip6_address_t addr,
u32  len,
const dpo_id_t dpo 
)

Definition at line 367 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_fib_table_fwding_dpo_update ( u32  fib_index,
const ip6_address_t addr,
u32  len,
const dpo_id_t dpo 
)

Definition at line 337 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip6_fib_table_fwding_lookup_with_if_index ( ip6_main_t im,
u32  sw_if_index,
const ip6_address_t dst 
)

Definition at line 314 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 ip6_fib_table_get_index_for_sw_if_index ( u32  sw_if_index)

Definition at line 323 of file ip6_fib.c.

+ Here is the caller graph for this function:

fib_node_index_t ip6_fib_table_lookup ( u32  fib_index,
const ip6_address_t addr,
u32  len 
)

Definition at line 169 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_node_index_t ip6_fib_table_lookup_exact_match ( u32  fib_index,
const ip6_address_t addr,
u32  len 
)

Definition at line 215 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip6_fib_table_show_all ( ip6_fib_t fib,
vlib_main_t vm 
)
static

Definition at line 531 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip6_fib_table_show_one ( ip6_fib_t fib,
vlib_main_t vm,
ip6_address_t address,
u32  mask_len,
int  detail 
)
static

Definition at line 554 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 520 of file ip6_fib.c.

+ Here is the caller graph for this function:

void ip6_fib_table_sub_tree_walk ( u32  fib_index,
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 497 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ip6_fib_table_walk ( u32  fib_index,
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 474 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int ip6_fib_walk_cb ( clib_bihash_kv_24_8_t kvp,
void *  arg 
)
static

Definition at line 413 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 610 of file ip6_fib.c.

+ Here is the call graph for this function:

static void vnet_ip6_fib_init ( u32  fib_index)
static

Definition at line 21 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

vlib_cli_command_t ip6_show_fib_command
static
Initial value:
= {
.path = "show ip6 fib",
.short_help = "show ip6 fib [summary] [table <table-id>] [index <fib-id>] [<ip6-addr>[/<width>]] [detail]",
.function = ip6_show_fib,
}
static clib_error_t * ip6_show_fib(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: ip6_fib.c:610

(constructor) VLIB_CLI_COMMAND (ip6_show_fib_command)

Definition at line 816 of file ip6_fib.c.