FD.io VPP  v18.10-34-gcce845e
Vector Packet Processing
fib_entry_src.c File Reference
+ Include dependency graph for fib_entry_src.c:

Go to the source code of this file.

Data Structures

struct  fib_entry_src_collect_forwarding_ctx_t_
 

Typedefs

typedef struct fib_entry_src_collect_forwarding_ctx_t_ fib_entry_src_collect_forwarding_ctx_t
 

Functions

const fib_entry_src_vft_tfib_entry_src_get_vft (const fib_entry_src_t *esrc)
 Get the VFT for a given source. More...
 
static void fib_entry_src_copy_default (const fib_entry_src_t *orig_src, const fib_entry_t *fib_entry, fib_entry_src_t *copy_src)
 
void fib_entry_src_register (fib_source_t source, const fib_entry_src_vft_t *vft)
 
static int fib_entry_src_cmp_for_sort (void *v1, void *v2)
 
static void fib_entry_src_action_init (fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags)
 
static fib_entry_src_tfib_entry_src_find_i (const fib_entry_t *fib_entry, fib_source_t source, u32 *index)
 
static fib_entry_src_tfib_entry_src_find (const fib_entry_t *fib_entry, fib_source_t source)
 
int fib_entry_is_sourced (fib_node_index_t fib_entry_index, fib_source_t source)
 
static fib_entry_src_tfib_entry_src_find_or_create (fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags)
 
static void fib_entry_src_action_deinit (fib_entry_t *fib_entry, fib_source_t source)
 
fib_entry_src_cover_res_t fib_entry_src_action_cover_change (fib_entry_t *fib_entry, fib_entry_src_t *esrc)
 
fib_entry_src_cover_res_t fib_entry_src_action_cover_update (fib_entry_t *fib_entry, fib_entry_src_t *esrc)
 
load_balance_flags_t fib_entry_calc_lb_flags (fib_entry_src_collect_forwarding_ctx_t *ctx)
 Determine whether this FIB entry should use a load-balance MAP to support PIC edge fast convergence. More...
 
static int fib_entry_src_valid_out_label (mpls_label_t label)
 
fib_forward_chain_type_t fib_entry_chain_type_fixup (const fib_entry_t *entry, fib_forward_chain_type_t fct)
 Turn the chain type requested by the client into the one they really wanted. More...
 
static dpo_proto_t fib_prefix_get_payload_proto (const fib_prefix_t *pfx)
 
static void fib_entry_src_get_path_forwarding (fib_node_index_t path_index, fib_entry_src_collect_forwarding_ctx_t *ctx)
 
static fib_path_list_walk_rc_t fib_entry_src_collect_forwarding (fib_node_index_t pl_index, fib_node_index_t path_index, void *arg)
 
void fib_entry_src_mk_lb (fib_entry_t *fib_entry, const fib_entry_src_t *esrc, fib_forward_chain_type_t fct, dpo_id_t *dpo_lb)
 
void fib_entry_src_action_install (fib_entry_t *fib_entry, fib_source_t source)
 
void fib_entry_src_action_uninstall (fib_entry_t *fib_entry)
 
static void fib_entry_recursive_loop_detect_i (fib_node_index_t path_list_index)
 
static fib_entry_tfib_entry_src_action_copy (fib_entry_t *fib_entry, const fib_entry_src_t *orig_src)
 
static fib_entry_src_tfib_entry_src_action_update_from_cover (fib_entry_t *fib_entry, const fib_entry_src_t *orig_src)
 
static fib_table_walk_rc_t fib_entry_src_covered_inherit_add_i (fib_entry_t *fib_entry, const fib_entry_src_t *cover_src)
 
static fib_table_walk_rc_t fib_entry_src_covered_inherit_walk_add (fib_node_index_t fei, void *ctx)
 
static fib_table_walk_rc_t fib_entry_src_covered_inherit_walk_remove (fib_node_index_t fei, void *ctx)
 
void fib_entry_src_inherit (const fib_entry_t *cover, fib_entry_t *covered)
 
static void fib_entry_src_covered_inherit_add (fib_entry_t *fib_entry, fib_source_t source)
 
static void fib_entry_src_covered_inherit_remove (fib_entry_t *fib_entry, fib_entry_src_t *esrc)
 
void fib_entry_src_action_activate (fib_entry_t *fib_entry, fib_source_t source)
 
void fib_entry_src_action_deactivate (fib_entry_t *fib_entry, fib_source_t source)
 
static void fib_entry_src_action_fwd_update (const fib_entry_t *fib_entry, fib_source_t source)
 
void fib_entry_src_action_reactivate (fib_entry_t *fib_entry, fib_source_t source)
 
void fib_entry_src_action_installed (const fib_entry_t *fib_entry, fib_source_t source)
 
fib_entry_tfib_entry_src_action_add (fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags, const dpo_id_t *dpo)
 
fib_entry_tfib_entry_src_action_update (fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags, const dpo_id_t *dpo)
 
fib_entry_src_flag_t fib_entry_src_action_remove_or_update_inherit (fib_entry_t *fib_entry, fib_source_t source)
 
fib_entry_src_flag_t fib_entry_src_action_remove (fib_entry_t *fib_entry, fib_source_t source)
 
static int fib_route_attached_cross_table (const fib_entry_t *fib_entry, const fib_route_path_t *rpath)
 
static int fib_path_is_attached (const fib_route_path_t *rpath)
 
fib_path_list_flags_t fib_entry_src_flags_2_path_list_flags (fib_entry_flag_t eflags)
 
static void fib_entry_flags_update (const fib_entry_t *fib_entry, const fib_route_path_t *rpath, fib_path_list_flags_t *pl_flags, fib_entry_src_t *esrc)
 
fib_entry_tfib_entry_src_action_path_add (fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags, const fib_route_path_t *rpath)
 
fib_entry_tfib_entry_src_action_path_swap (fib_entry_t *fib_entry, fib_source_t source, fib_entry_flag_t flags, const fib_route_path_t *rpaths)
 
fib_entry_src_flag_t fib_entry_src_action_path_remove (fib_entry_t *fib_entry, fib_source_t source, const fib_route_path_t *rpath)
 
u8fib_entry_src_format (fib_entry_t *fib_entry, fib_source_t source, u8 *s)
 
adj_index_t fib_entry_get_adj_for_source (fib_node_index_t fib_entry_index, fib_source_t source)
 
const int fib_entry_get_dpo_for_source (fib_node_index_t fib_entry_index, fib_source_t source, dpo_id_t *dpo)
 
u32 fib_entry_get_resolving_interface_for_source (fib_node_index_t entry_index, fib_source_t source)
 
fib_entry_flag_t fib_entry_get_flags_for_source (fib_node_index_t entry_index, fib_source_t source)
 
fib_entry_flag_t fib_entry_get_flags_i (const fib_entry_t *fib_entry)
 
void fib_entry_set_source_data (fib_node_index_t fib_entry_index, fib_source_t source, const void *data)
 
const void * fib_entry_get_source_data (fib_node_index_t fib_entry_index, fib_source_t source)
 
void fib_entry_src_module_init (void)
 

Variables

static fib_entry_src_vft_t fib_entry_src_vft [FIB_SOURCE_MAX]
 

Typedef Documentation

Function Documentation

Determine whether this FIB entry should use a load-balance MAP to support PIC edge fast convergence.

We'll use a LB map if the path-list has multiple recursive paths. recursive paths implies BGP, and hence scale.

Definition at line 221 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_forward_chain_type_t fib_entry_chain_type_fixup ( const fib_entry_t entry,
fib_forward_chain_type_t  fct 
)

Turn the chain type requested by the client into the one they really wanted.

Definition at line 250 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_flags_update ( const fib_entry_t fib_entry,
const fib_route_path_t rpath,
fib_path_list_flags_t pl_flags,
fib_entry_src_t esrc 
)
static

Definition at line 1491 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

adj_index_t fib_entry_get_adj_for_source ( fib_node_index_t  fib_entry_index,
fib_source_t  source 
)

Definition at line 1719 of file fib_entry_src.c.

+ Here is the call graph for this function:

const int fib_entry_get_dpo_for_source ( fib_node_index_t  fib_entry_index,
fib_source_t  source,
dpo_id_t dpo 
)

Definition at line 1744 of file fib_entry_src.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_for_source ( fib_node_index_t  entry_index,
fib_source_t  source 
)

Definition at line 1795 of file fib_entry_src.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_i ( const fib_entry_t fib_entry)

Definition at line 1814 of file fib_entry_src.c.

+ Here is the caller graph for this function:

u32 fib_entry_get_resolving_interface_for_source ( fib_node_index_t  entry_index,
fib_source_t  source 
)

Definition at line 1774 of file fib_entry_src.c.

+ Here is the call graph for this function:

const void* fib_entry_get_source_data ( fib_node_index_t  fib_entry_index,
fib_source_t  source 
)

Definition at line 1855 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int fib_entry_is_sourced ( fib_node_index_t  fib_entry_index,
fib_source_t  source 
)

Definition at line 133 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_recursive_loop_detect_i ( fib_node_index_t  path_list_index)
static

Definition at line 710 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_set_source_data ( fib_node_index_t  fib_entry_index,
fib_source_t  source,
const void *  data 
)

Definition at line 1837 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_action_activate ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 981 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_t* fib_entry_src_action_add ( fib_entry_t fib_entry,
fib_source_t  source,
fib_entry_flag_t  flags,
const dpo_id_t dpo 
)

Definition at line 1204 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_entry_t* fib_entry_src_action_copy ( fib_entry_t fib_entry,
const fib_entry_src_t orig_src 
)
static

Definition at line 725 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_src_cover_res_t fib_entry_src_action_cover_change ( fib_entry_t fib_entry,
fib_entry_src_t esrc 
)

Definition at line 179 of file fib_entry_src.c.

+ Here is the caller graph for this function:

fib_entry_src_cover_res_t fib_entry_src_action_cover_update ( fib_entry_t fib_entry,
fib_entry_src_t esrc 
)

Definition at line 193 of file fib_entry_src.c.

+ Here is the caller graph for this function:

void fib_entry_src_action_deactivate ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 1042 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_src_action_deinit ( fib_entry_t fib_entry,
fib_source_t  source 
)
static

Definition at line 161 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_src_action_fwd_update ( const fib_entry_t fib_entry,
fib_source_t  source 
)
static

Definition at line 1085 of file fib_entry_src.c.

+ Here is the caller graph for this function:

static void fib_entry_src_action_init ( fib_entry_t fib_entry,
fib_source_t  source,
fib_entry_flag_t  flags 
)
static

Definition at line 77 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_action_install ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 637 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_action_installed ( const fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 1182 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_t* fib_entry_src_action_path_add ( fib_entry_t fib_entry,
fib_source_t  source,
fib_entry_flag_t  flags,
const fib_route_path_t rpath 
)

Definition at line 1532 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_src_flag_t fib_entry_src_action_path_remove ( fib_entry_t fib_entry,
fib_source_t  source,
const fib_route_path_t rpath 
)

Definition at line 1656 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_t* fib_entry_src_action_path_swap ( fib_entry_t fib_entry,
fib_source_t  source,
fib_entry_flag_t  flags,
const fib_route_path_t rpaths 
)

Definition at line 1591 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_action_reactivate ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 1098 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_src_flag_t fib_entry_src_action_remove ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 1363 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_src_flag_t fib_entry_src_action_remove_or_update_inherit ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 1308 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_action_uninstall ( fib_entry_t fib_entry)

Definition at line 690 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_t* fib_entry_src_action_update ( fib_entry_t fib_entry,
fib_source_t  source,
fib_entry_flag_t  flags,
const dpo_id_t dpo 
)

Definition at line 1267 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_entry_src_t* fib_entry_src_action_update_from_cover ( fib_entry_t fib_entry,
const fib_entry_src_t orig_src 
)
static

Definition at line 769 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int fib_entry_src_cmp_for_sort ( void *  v1,
void *  v2 
)
static

Definition at line 68 of file fib_entry_src.c.

+ Here is the caller graph for this function:

static fib_path_list_walk_rc_t fib_entry_src_collect_forwarding ( fib_node_index_t  pl_index,
fib_node_index_t  path_index,
void *  arg 
)
static

Definition at line 371 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_src_copy_default ( const fib_entry_src_t orig_src,
const fib_entry_t fib_entry,
fib_entry_src_t copy_src 
)
static

Definition at line 48 of file fib_entry_src.c.

+ Here is the caller graph for this function:

static void fib_entry_src_covered_inherit_add ( fib_entry_t fib_entry,
fib_source_t  source 
)
static

Definition at line 942 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_table_walk_rc_t fib_entry_src_covered_inherit_add_i ( fib_entry_t fib_entry,
const fib_entry_src_t cover_src 
)
static

Definition at line 789 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_src_covered_inherit_remove ( fib_entry_t fib_entry,
fib_entry_src_t esrc 
)
static

Definition at line 964 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_table_walk_rc_t fib_entry_src_covered_inherit_walk_add ( fib_node_index_t  fei,
void *  ctx 
)
static

Definition at line 853 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_table_walk_rc_t fib_entry_src_covered_inherit_walk_remove ( fib_node_index_t  fei,
void *  ctx 
)
static

Definition at line 860 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_entry_src_t* fib_entry_src_find ( const fib_entry_t fib_entry,
fib_source_t  source 
)
static

Definition at line 125 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_entry_src_t* fib_entry_src_find_i ( const fib_entry_t fib_entry,
fib_source_t  source,
u32 index 
)
static

Definition at line 96 of file fib_entry_src.c.

+ Here is the caller graph for this function:

static fib_entry_src_t* fib_entry_src_find_or_create ( fib_entry_t fib_entry,
fib_source_t  source,
fib_entry_flag_t  flags 
)
static

Definition at line 144 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_path_list_flags_t fib_entry_src_flags_2_path_list_flags ( fib_entry_flag_t  eflags)

Definition at line 1470 of file fib_entry_src.c.

+ Here is the caller graph for this function:

u8* fib_entry_src_format ( fib_entry_t fib_entry,
fib_source_t  source,
u8 s 
)

Definition at line 1705 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void fib_entry_src_get_path_forwarding ( fib_node_index_t  path_index,
fib_entry_src_collect_forwarding_ctx_t ctx 
)
static

Definition at line 304 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const fib_entry_src_vft_t* fib_entry_src_get_vft ( const fib_entry_src_t esrc)

Get the VFT for a given source.

This is a combination of the source enum and the interposer flags

Definition at line 37 of file fib_entry_src.c.

+ Here is the caller graph for this function:

void fib_entry_src_inherit ( const fib_entry_t cover,
fib_entry_t covered 
)

Definition at line 925 of file fib_entry_src.c.

+ Here is the caller graph for this function:

void fib_entry_src_mk_lb ( fib_entry_t fib_entry,
const fib_entry_src_t esrc,
fib_forward_chain_type_t  fct,
dpo_id_t dpo_lb 
)

Definition at line 498 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_module_init ( void  )

Definition at line 1873 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_register ( fib_source_t  source,
const fib_entry_src_vft_t vft 
)

Definition at line 56 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int fib_entry_src_valid_out_label ( mpls_label_t  label)
static

Definition at line 236 of file fib_entry_src.c.

+ Here is the caller graph for this function:

static int fib_path_is_attached ( const fib_route_path_t rpath)
inlinestatic

Definition at line 1442 of file fib_entry_src.c.

+ Here is the caller graph for this function:

static dpo_proto_t fib_prefix_get_payload_proto ( const fib_prefix_t pfx)
static

Definition at line 287 of file fib_entry_src.c.

+ Here is the caller graph for this function:

static int fib_route_attached_cross_table ( const fib_entry_t fib_entry,
const fib_route_path_t rpath 
)
inlinestatic

Definition at line 1418 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

fib_entry_src_vft_t fib_entry_src_vft[FIB_SOURCE_MAX]
static

Definition at line 30 of file fib_entry_src.c.