FD.io VPP  v19.08-27-gf4dcae4
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 *rpaths, 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 *rpaths)
 
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 *rpaths)
 
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_source_t fib_entry_get_source_i (const fib_entry_t *fib_entry)
 
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 224 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 253 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 rpaths,
fib_path_list_flags_t pl_flags,
fib_entry_src_t esrc 
)
static

Definition at line 1493 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 1736 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 1761 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 1812 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 1840 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 1791 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 1867 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_source_t fib_entry_get_source_i ( const fib_entry_t fib_entry)

Definition at line 1831 of file fib_entry_src.c.

int fib_entry_is_sourced ( fib_node_index_t  fib_entry_index,
fib_source_t  source 
)

Definition at line 134 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 712 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 1849 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 983 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 1206 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 727 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 182 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 196 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 1044 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 162 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 1087 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 78 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 640 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 1184 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 rpaths 
)

Definition at line 1539 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 rpaths 
)

Definition at line 1673 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 1605 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 1100 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 1365 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 1310 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 693 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 1269 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 771 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 69 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 374 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 49 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 944 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 791 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 966 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 855 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 862 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 126 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 97 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 145 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 1472 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 1722 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 307 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 38 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 927 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 501 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 1885 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 57 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 239 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 1444 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 290 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 1420 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 31 of file fib_entry_src.c.