FD.io VPP  v17.01-9-ge7dcee4
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

static fib_protocol_t fib_entry_get_proto (const fib_entry_t *fib_entry)
 
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)
 
void fib_entry_src_action_init (fib_entry_t *fib_entry, fib_source_t source)
 
static fib_entry_src_tfib_entry_src_find (const fib_entry_t *fib_entry, fib_source_t source, u32 *index)
 
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, u32 *index)
 
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_source_t source)
 
fib_entry_src_cover_res_t fib_entry_src_action_cover_update (fib_entry_t *fib_entry, fib_source_t source)
 
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 int 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)
 
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 (fib_entry_t *fib_entry, fib_source_t source)
 
static int fib_route_recurses_via_self (const fib_prefix_t *prefix, const fib_route_path_t *rpath)
 
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)
 
static void fib_entry_src_path_ext_append (fib_entry_src_t *esrc, const fib_route_path_t *rpath)
 
static void fib_entry_src_path_ext_insert (fib_entry_src_t *esrc, const fib_route_path_t *rpath)
 
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 is the path-list has recursive paths. recursive paths implies BGP, and hence scale.

Definition at line 202 of file fib_entry_src.c.

+ 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 229 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 964 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 1301 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller 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 1326 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 1376 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 1395 of file fib_entry_src.c.

+ Here is the caller graph for this function:

static fib_protocol_t fib_entry_get_proto ( const fib_entry_t fib_entry)
static

Definition at line 32 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 1355 of file fib_entry_src.c.

+ Here is the call graph for this function:

+ Here is the caller 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 1436 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 104 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 537 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 1418 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 547 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 734 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_source_t  source 
)

Definition at line 153 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_update ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 171 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_deactivate ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 601 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_deinit ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 132 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 637 of file fib_entry_src.c.

+ Here is the caller graph for this function:

void fib_entry_src_action_init ( fib_entry_t fib_entry,
fib_source_t  source 
)

Definition at line 54 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 464 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 709 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 1071 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 1213 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 1143 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 654 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 835 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 517 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 793 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 45 of file fib_entry_src.c.

+ Here is the caller graph for this function:

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

Definition at line 263 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,
u32 index 
)
static

Definition at line 75 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,
u32 index 
)
static

Definition at line 115 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 943 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 1285 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_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 365 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 1454 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_path_ext_append ( fib_entry_src_t esrc,
const fib_route_path_t rpath 
)
static

Definition at line 1016 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_path_ext_insert ( fib_entry_src_t esrc,
const fib_route_path_t rpath 
)
static

Definition at line 1039 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 38 of file fib_entry_src.c.

+ Here is the caller graph for this function:

static int fib_entry_src_valid_out_label ( mpls_label_t  label)
static

Definition at line 216 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 928 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 902 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_route_recurses_via_self ( const fib_prefix_t prefix,
const fib_route_path_t rpath 
)
inlinestatic

Definition at line 881 of file fib_entry_src.c.

+ 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 29 of file fib_entry_src.c.