FD.io VPP  v17.04-9-g99c0734
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)
 
u32 ip6_fib_table_find_or_create_and_lock (u32 table_id)
 Get or create an IPv6 fib. More...
 
u32 ip6_fib_table_create_and_lock (void)
 
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 (ip6_main_t *im, u32 fib_index, const ip6_address_t *dst)
 
u32 ip6_fib_table_fwding_lookup_with_if_index (ip6_main_t *im, u32 sw_if_index, const ip6_address_t *dst)
 
flow_hash_config_t ip6_fib_table_get_flow_hash_config (u32 fib_index)
 
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...
 
static int 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)
 
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 265 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 567 of file ip6_fib.c.

static u32 create_fib_with_table_id ( u32  table_id)
static

Definition at line 53 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 ( void  )

Definition at line 95 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 101 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 309 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 278 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)

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 81 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 436 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 406 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 ( ip6_main_t im,
u32  fib_index,
const ip6_address_t dst 
)

Definition at line 339 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 377 of file ip6_fib.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

flow_hash_config_t ip6_fib_table_get_flow_hash_config ( u32  fib_index)

Definition at line 386 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 392 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 193 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 239 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 527 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 
)
static

Definition at line 550 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_table_show_walk ( fib_node_index_t  fib_entry_index,
void *  arg 
)
static

Definition at line 516 of file ip6_fib.c.

+ 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 494 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 480 of file ip6_fib.c.

+ 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 581 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 20 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>]]",
.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:581

(constructor) VLIB_CLI_COMMAND (ip6_show_fib_command)

Definition at line 762 of file ip6_fib.c.