FD.io VPP  v19.01.2-3-gf61a1a8
Vector Packet Processing
fib_entry.c File Reference
+ Include dependency graph for fib_entry.c:

Go to the source code of this file.

Functions

fib_entry_tfib_entry_get (fib_node_index_t index)
 
static fib_node_tfib_entry_get_node (fib_node_index_t index)
 
fib_node_index_t fib_entry_get_index (const fib_entry_t *fib_entry)
 
fib_protocol_t fib_entry_get_proto (const fib_entry_t *fib_entry)
 
dpo_proto_t fib_entry_get_dpo_proto (const fib_entry_t *fib_entry)
 
fib_forward_chain_type_t fib_entry_get_default_chain_type (const fib_entry_t *fib_entry)
 
u8format_fib_source (u8 *s, va_list *args)
 
u8format_fib_entry_flags (u8 *s, va_list *args)
 
u8format_fib_entry_src_flags (u8 *s, va_list *args)
 
u8format_fib_entry (u8 *s, va_list *args)
 
static fib_entry_tfib_entry_from_fib_node (fib_node_t *node)
 
static void fib_entry_last_lock_gone (fib_node_t *node)
 
static fib_entry_src_tfib_entry_get_best_src_i (const fib_entry_t *fib_entry)
 
static fib_source_t fib_entry_src_get_source (const fib_entry_src_t *esrc)
 
static fib_entry_flag_t fib_entry_src_get_flags (const fib_entry_src_t *esrc)
 
fib_entry_flag_t fib_entry_get_flags (fib_node_index_t fib_entry_index)
 
static fib_node_back_walk_rc_t fib_entry_back_walk_notify (fib_node_t *node, fib_node_back_walk_ctx_t *ctx)
 
static void fib_entry_show_memory (void)
 
void fib_entry_contribute_urpf (fib_node_index_t entry_index, index_t urpf)
 Contribute the set of Adjacencies that this entry forwards with to build the uRPF list of its children. More...
 
static fib_forward_chain_type_t fib_entry_chain_type_mcast_to_ucast (fib_forward_chain_type_t fct)
 
void fib_entry_contribute_forwarding (fib_node_index_t fib_entry_index, fib_forward_chain_type_t fct, dpo_id_t *dpo)
 
const dpo_id_tfib_entry_contribute_ip_forwarding (fib_node_index_t fib_entry_index)
 
adj_index_t fib_entry_get_adj (fib_node_index_t fib_entry_index)
 
fib_node_index_t fib_entry_get_path_list (fib_node_index_t fib_entry_index)
 
u32 fib_entry_child_add (fib_node_index_t fib_entry_index, fib_node_type_t child_type, fib_node_index_t child_index)
 
void fib_entry_child_remove (fib_node_index_t fib_entry_index, u32 sibling_index)
 
static fib_entry_tfib_entry_alloc (u32 fib_index, const fib_prefix_t *prefix, fib_node_index_t *fib_entry_index)
 
static fib_entry_tfib_entry_post_flag_update_actions (fib_entry_t *fib_entry, fib_entry_flag_t old_flags)
 
static void fib_entry_post_install_actions (fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t old_flags)
 
fib_node_index_t fib_entry_create (u32 fib_index, const fib_prefix_t *prefix, fib_source_t source, fib_entry_flag_t flags, const fib_route_path_t *paths)
 
fib_node_index_t fib_entry_create_special (u32 fib_index, const fib_prefix_t *prefix, fib_source_t source, fib_entry_flag_t flags, const dpo_id_t *dpo)
 
static void fib_entry_post_update_actions (fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t old_flags)
 
void fib_entry_recalculate_forwarding (fib_node_index_t fib_entry_index)
 
static void fib_entry_source_change_w_flags (fib_entry_t *fib_entry, fib_source_t old_source, fib_entry_flag_t old_flags, fib_source_t new_source)
 
void fib_entry_source_change (fib_entry_t *fib_entry, fib_source_t old_source, fib_source_t new_source)
 
void fib_entry_special_add (fib_node_index_t fib_entry_index, fib_source_t source, fib_entry_flag_t flags, const dpo_id_t *dpo)
 
void fib_entry_special_update (fib_node_index_t fib_entry_index, fib_source_t source, fib_entry_flag_t flags, const dpo_id_t *dpo)
 
void fib_entry_path_add (fib_node_index_t fib_entry_index, fib_source_t source, fib_entry_flag_t flags, const fib_route_path_t *rpath)
 
static fib_entry_src_flag_t fib_entry_src_burn_only_inherited (fib_entry_t *fib_entry)
 
static fib_entry_src_flag_t fib_entry_source_removed (fib_entry_t *fib_entry, fib_entry_flag_t old_flags)
 
fib_entry_src_flag_t fib_entry_path_remove (fib_node_index_t fib_entry_index, fib_source_t source, const fib_route_path_t *rpath)
 
fib_entry_src_flag_t fib_entry_special_remove (fib_node_index_t fib_entry_index, fib_source_t source)
 
void fib_entry_inherit (fib_node_index_t cover, fib_node_index_t covered)
 fib_entry_inherit More...
 
fib_entry_src_flag_t fib_entry_delete (fib_node_index_t fib_entry_index, fib_source_t source)
 fib_entry_delete More...
 
void fib_entry_update (fib_node_index_t fib_entry_index, fib_source_t source, fib_entry_flag_t flags, const fib_route_path_t *paths)
 fib_entry_update More...
 
void fib_entry_cover_changed (fib_node_index_t fib_entry_index)
 
void fib_entry_cover_updated (fib_node_index_t fib_entry_index)
 
int fib_entry_recursive_loop_detect (fib_node_index_t entry_index, fib_node_index_t **entry_indicies)
 
u32 fib_entry_get_resolving_interface (fib_node_index_t entry_index)
 
fib_source_t fib_entry_get_best_source (fib_node_index_t entry_index)
 
int fib_entry_is_host (fib_node_index_t fib_entry_index)
 Return !0 is the entry represents a host prefix. More...
 
int fib_entry_is_resolved (fib_node_index_t fib_entry_index)
 Return !0 is the entry is reoslved, i.e. More...
 
void fib_entry_set_flow_hash_config (fib_node_index_t fib_entry_index, flow_hash_config_t hash_config)
 
u32 fib_entry_get_stats_index (fib_node_index_t fib_entry_index)
 
static int fib_ip4_address_compare (const ip4_address_t *a1, const ip4_address_t *a2)
 
static int fib_ip6_address_compare (const ip6_address_t *a1, const ip6_address_t *a2)
 
static int fib_entry_cmp (fib_node_index_t fib_entry_index1, fib_node_index_t fib_entry_index2)
 
int fib_entry_cmp_for_sort (void *i1, void *i2)
 
void fib_entry_lock (fib_node_index_t fib_entry_index)
 
void fib_entry_unlock (fib_node_index_t fib_entry_index)
 
void fib_entry_module_init (void)
 
void fib_entry_encode (fib_node_index_t fib_entry_index, fib_route_path_encode_t **api_rpaths)
 
const fib_prefix_tfib_entry_get_prefix (fib_node_index_t fib_entry_index)
 
u32 fib_entry_get_fib_index (fib_node_index_t fib_entry_index)
 
u32 fib_entry_pool_size (void)
 
static clib_error_tshow_fib_entry_command (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 

Variables

static const char * fib_source_names [] = FIB_SOURCES
 
static const char * fib_attribute_names [] = FIB_ENTRY_ATTRIBUTES
 
static const char * fib_src_attribute_names [] = FIB_ENTRY_SRC_ATTRIBUTES
 
static fib_entry_tfib_entry_pool
 
vlib_log_class_t fib_entry_logger
 the logger More...
 
static const fib_node_vft_t fib_entry_vft
 
static vlib_cli_command_t show_fib_entry
 (constructor) VLIB_CLI_COMMAND (show_fib_entry) More...
 

Function Documentation

static fib_entry_t* fib_entry_alloc ( u32  fib_index,
const fib_prefix_t prefix,
fib_node_index_t fib_entry_index 
)
static

Definition at line 596 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_node_back_walk_rc_t fib_entry_back_walk_notify ( fib_node_t node,
fib_node_back_walk_ctx_t ctx 
)
static

Definition at line 312 of file fib_entry.c.

+ Here is the call graph for this function:

static fib_forward_chain_type_t fib_entry_chain_type_mcast_to_ucast ( fib_forward_chain_type_t  fct)
static

Definition at line 416 of file fib_entry.c.

+ Here is the caller graph for this function:

u32 fib_entry_child_add ( fib_node_index_t  fib_entry_index,
fib_node_type_t  child_type,
fib_node_index_t  child_index 
)

Definition at line 555 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_child_remove ( fib_node_index_t  fib_entry_index,
u32  sibling_index 
)

Definition at line 566 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int fib_entry_cmp ( fib_node_index_t  fib_entry_index1,
fib_node_index_t  fib_entry_index2 
)
static

Definition at line 1580 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int fib_entry_cmp_for_sort ( void *  i1,
void *  i2 
)

Definition at line 1616 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_contribute_forwarding ( fib_node_index_t  fib_entry_index,
fib_forward_chain_type_t  fct,
dpo_id_t dpo 
)

Definition at line 447 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const dpo_id_t* fib_entry_contribute_ip_forwarding ( fib_node_index_t  fib_entry_index)

Definition at line 506 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_contribute_urpf ( fib_node_index_t  entry_index,
index_t  urpf 
)

Contribute the set of Adjacencies that this entry forwards with to build the uRPF list of its children.

Definition at line 401 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_cover_changed ( fib_node_index_t  fib_entry_index)

Definition at line 1258 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_cover_updated ( fib_node_index_t  fib_entry_index)

Definition at line 1332 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_node_index_t fib_entry_create ( u32  fib_index,
const fib_prefix_t prefix,
fib_source_t  source,
fib_entry_flag_t  flags,
const fib_route_path_t paths 
)

Definition at line 715 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_node_index_t fib_entry_create_special ( u32  fib_index,
const fib_prefix_t prefix,
fib_source_t  source,
fib_entry_flag_t  flags,
const dpo_id_t dpo 
)

Definition at line 754 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_src_flag_t fib_entry_delete ( fib_node_index_t  fib_entry_index,
fib_source_t  source 
)

fib_entry_delete

The source is withdrawing all the paths it provided

Definition at line 1213 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_encode ( fib_node_index_t  fib_entry_index,
fib_route_path_encode_t **  api_rpaths 
)

Definition at line 1652 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_entry_t* fib_entry_from_fib_node ( fib_node_t node)
static

Definition at line 227 of file fib_entry.c.

+ Here is the caller graph for this function:

fib_entry_t* fib_entry_get ( fib_node_index_t  index)

Definition at line 50 of file fib_entry.c.

adj_index_t fib_entry_get_adj ( fib_node_index_t  fib_entry_index)

Definition at line 526 of file fib_entry.c.

+ Here is the call graph for this function:

fib_source_t fib_entry_get_best_source ( fib_node_index_t  entry_index)

Definition at line 1461 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_entry_src_t* fib_entry_get_best_src_i ( const fib_entry_t fib_entry)
static

Definition at line 261 of file fib_entry.c.

+ Here is the caller graph for this function:

fib_forward_chain_type_t fib_entry_get_default_chain_type ( const fib_entry_t fib_entry)

Definition at line 80 of file fib_entry.c.

+ Here is the caller graph for this function:

dpo_proto_t fib_entry_get_dpo_proto ( const fib_entry_t fib_entry)

Definition at line 74 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 fib_entry_get_fib_index ( fib_node_index_t  fib_entry_index)

Definition at line 1688 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_flag_t fib_entry_get_flags ( fib_node_index_t  fib_entry_index)

Definition at line 301 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_node_index_t fib_entry_get_index ( const fib_entry_t fib_entry)

Definition at line 62 of file fib_entry.c.

+ Here is the caller graph for this function:

static fib_node_t* fib_entry_get_node ( fib_node_index_t  index)
static

Definition at line 56 of file fib_entry.c.

+ Here is the call graph for this function:

fib_node_index_t fib_entry_get_path_list ( fib_node_index_t  fib_entry_index)

Definition at line 545 of file fib_entry.c.

+ Here is the call graph for this function:

const fib_prefix_t* fib_entry_get_prefix ( fib_node_index_t  fib_entry_index)

Definition at line 1678 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_protocol_t fib_entry_get_proto ( const fib_entry_t fib_entry)

Definition at line 68 of file fib_entry.c.

+ Here is the caller graph for this function:

u32 fib_entry_get_resolving_interface ( fib_node_index_t  entry_index)

Definition at line 1451 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 fib_entry_get_stats_index ( fib_node_index_t  fib_entry_index)

Definition at line 1541 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_inherit ( fib_node_index_t  cover,
fib_node_index_t  covered 
)

fib_entry_inherit

If the source on the cover is inherting then push this source down to the covered.

Definition at line 1200 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int fib_entry_is_host ( fib_node_index_t  fib_entry_index)

Return !0 is the entry represents a host prefix.

Definition at line 1476 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int fib_entry_is_resolved ( fib_node_index_t  fib_entry_index)

Return !0 is the entry is reoslved, i.e.

will return a valid forwarding chain

Definition at line 1486 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_last_lock_gone ( fib_node_t node)
static

Definition at line 234 of file fib_entry.c.

+ Here is the call graph for this function:

void fib_entry_lock ( fib_node_index_t  fib_entry_index)

Definition at line 1625 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_module_init ( void  )

Definition at line 1645 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_path_add ( fib_node_index_t  fib_entry_index,
fib_source_t  source,
fib_entry_flag_t  flags,
const fib_route_path_t rpath 
)

Definition at line 906 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_src_flag_t fib_entry_path_remove ( fib_node_index_t  fib_entry_index,
fib_source_t  source,
const fib_route_path_t rpath 
)

Definition at line 1004 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 fib_entry_pool_size ( void  )

Definition at line 1698 of file fib_entry.c.

+ Here is the call graph for this function:

static fib_entry_t* fib_entry_post_flag_update_actions ( fib_entry_t fib_entry,
fib_entry_flag_t  old_flags 
)
static

Definition at line 636 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_post_install_actions ( fib_entry_t fib_entry,
fib_source_t  source,
fib_entry_flag_t  old_flags 
)
static

Definition at line 705 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_post_update_actions ( fib_entry_t fib_entry,
fib_source_t  source,
fib_entry_flag_t  old_flags 
)
static

Definition at line 782 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_recalculate_forwarding ( fib_node_index_t  fib_entry_index)

Definition at line 804 of file fib_entry.c.

+ Here is the call graph for this function:

int fib_entry_recursive_loop_detect ( fib_node_index_t  entry_index,
fib_node_index_t **  entry_indicies 
)

Definition at line 1400 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_set_flow_hash_config ( fib_node_index_t  fib_entry_index,
flow_hash_config_t  hash_config 
)

Definition at line 1512 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_show_memory ( void  )
static

Definition at line 359 of file fib_entry.c.

+ Here is the call graph for this function:

void fib_entry_source_change ( fib_entry_t fib_entry,
fib_source_t  old_source,
fib_source_t  new_source 
)

Definition at line 856 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_source_change_w_flags ( fib_entry_t fib_entry,
fib_source_t  old_source,
fib_entry_flag_t  old_flags,
fib_source_t  new_source 
)
static

Definition at line 819 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_entry_src_flag_t fib_entry_source_removed ( fib_entry_t fib_entry,
fib_entry_flag_t  old_flags 
)
static

Definition at line 960 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_special_add ( fib_node_index_t  fib_entry_index,
fib_source_t  source,
fib_entry_flag_t  flags,
const dpo_id_t dpo 
)

Definition at line 870 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_src_flag_t fib_entry_special_remove ( fib_node_index_t  fib_entry_index,
fib_source_t  source 
)

Definition at line 1098 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_special_update ( fib_node_index_t  fib_entry_index,
fib_source_t  source,
fib_entry_flag_t  flags,
const dpo_id_t dpo 
)

Definition at line 887 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_entry_src_flag_t fib_entry_src_burn_only_inherited ( fib_entry_t fib_entry)
static

Definition at line 931 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_entry_flag_t fib_entry_src_get_flags ( const fib_entry_src_t esrc)
static

Definition at line 291 of file fib_entry.c.

+ Here is the caller graph for this function:

static fib_source_t fib_entry_src_get_source ( const fib_entry_src_t esrc)
static

Definition at line 281 of file fib_entry.c.

+ Here is the caller graph for this function:

void fib_entry_unlock ( fib_node_index_t  fib_entry_index)

Definition at line 1635 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_update ( fib_node_index_t  fib_entry_index,
fib_source_t  source,
fib_entry_flag_t  flags,
const fib_route_path_t paths 
)

fib_entry_update

The source has provided a new set of paths that will replace the old.

Definition at line 1225 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int fib_ip4_address_compare ( const ip4_address_t a1,
const ip4_address_t a2 
)
static

Definition at line 1551 of file fib_entry.c.

+ Here is the caller graph for this function:

static int fib_ip6_address_compare ( const ip6_address_t a1,
const ip6_address_t a2 
)
static

Definition at line 1565 of file fib_entry.c.

+ Here is the caller graph for this function:

u8* format_fib_entry ( u8 s,
va_list *  args 
)

Definition at line 139 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_fib_entry_flags ( u8 s,
va_list *  args 
)

Definition at line 109 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_fib_entry_src_flags ( u8 s,
va_list *  args 
)

Definition at line 124 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_fib_source ( u8 s,
va_list *  args 
)

Definition at line 99 of file fib_entry.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 1704 of file fib_entry.c.

+ Here is the call graph for this function:

Variable Documentation

const char* fib_attribute_names[] = FIB_ENTRY_ATTRIBUTES
static

Definition at line 36 of file fib_entry.c.

vlib_log_class_t fib_entry_logger

the logger

Debug macro.

Definition at line 47 of file fib_entry.c.

fib_entry_t* fib_entry_pool
static

Definition at line 42 of file fib_entry.c.

const fib_node_vft_t fib_entry_vft
static
Initial value:
= {
.fnv_get = fib_entry_get_node,
.fnv_last_lock = fib_entry_last_lock_gone,
.fnv_back_walk = fib_entry_back_walk_notify,
.fnv_mem_show = fib_entry_show_memory,
}
static fib_node_back_walk_rc_t fib_entry_back_walk_notify(fib_node_t *node, fib_node_back_walk_ctx_t *ctx)
Definition: fib_entry.c:312
static fib_node_t * fib_entry_get_node(fib_node_index_t index)
Definition: fib_entry.c:56
static void fib_entry_last_lock_gone(fib_node_t *node)
Definition: fib_entry.c:234
static void fib_entry_show_memory(void)
Definition: fib_entry.c:359

Definition at line 389 of file fib_entry.c.

const char* fib_source_names[] = FIB_SOURCES
static

Definition at line 35 of file fib_entry.c.

const char* fib_src_attribute_names[] = FIB_ENTRY_SRC_ATTRIBUTES
static

Definition at line 37 of file fib_entry.c.

vlib_cli_command_t show_fib_entry
static
Initial value:
= {
.path = "show fib entry",
.short_help = "show fib entry",
}
static clib_error_t * show_fib_entry_command(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: fib_entry.c:1704

(constructor) VLIB_CLI_COMMAND (show_fib_entry)

Definition at line 1745 of file fib_entry.c.