|
FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
|
Go to the documentation of this file.
132 src->u.adj.fesa_sibling);
150 if (NULL != path_ext)
156 ASSERT(!
"no path extension");
178 if (
ctx->cover_itf == adj_itf)
195 ctx->cover_itf ==
swif->unnumbered_sw_if_index)
228 ASSERT(cover != fib_entry);
230 src->u.adj.fesa_sibling =
327 return (
format(s,
" cover:%d",
src->u.adj.fesa_cover));
fib_entry_flag_t fib_entry_get_flags_i(const fib_entry_t *fib_entry)
Result from a cover update/change.
static void fib_enty_src_adj_update_path_ext(fib_entry_src_t *src, fib_node_index_t path_index, fib_path_ext_adj_flags_t flags)
struct fib_entry_src_path_list_walk_cxt_t_ fib_entry_src_path_list_walk_cxt_t
static fib_entry_src_cover_res_t fib_entry_src_adj_cover_change(fib_entry_src_t *src, const fib_entry_t *fib_entry)
@ FIB_NODE_BW_REASON_FLAG_NONE
fib_path_ext_adj_flags_t flags
static void fib_entry_src_adj_installed(fib_entry_src_t *src, const fib_entry_t *fib_entry)
@ FIB_ENTRY_FLAG_ATTACHED
Information related to the source of a FIB entry.
static void fib_entry_src_adj_remove(fib_entry_src_t *src)
#define FIB_NODE_INDEX_INVALID
enum fib_path_list_walk_rc_t_ fib_path_list_walk_rc_t
return code to control pat-hlist walk
static vnet_sw_interface_t * vnet_get_sw_interface(vnet_main_t *vnm, u32 sw_if_index)
void fib_path_ext_list_flush(fib_path_ext_list_t *list)
void fib_attached_export_covered_removed(fib_entry_t *cover, fib_node_index_t covered)
static fib_entry_src_cover_res_t fib_entry_src_adj_cover_update(fib_entry_src_t *src, const fib_entry_t *fib_entry)
enum fib_path_list_flags_t_ fib_path_list_flags_t
@ FIB_NODE_BW_REASON_FLAG_EVALUATE
Virtual function table each FIB entry source will register.
u32 fe_fib_index
The index of the FIB table this entry is in.
static void fib_entry_src_adj_deactivate(fib_entry_src_t *src, const fib_entry_t *fib_entry)
static int fib_entry_src_adj_activate(fib_entry_src_t *src, const fib_entry_t *fib_entry)
@ FIB_SOURCE_INTERFACE
Route added as a result of interface configuration.
void fib_path_ext_list_remove(fib_path_ext_list_t *list, fib_path_ext_type_t ext_type, const fib_route_path_t *rpath)
vnet_main_t * vnet_get_main(void)
enum fib_path_ext_adj_flags_t_ fib_path_ext_adj_flags_t
@ FIB_SOURCE_BH_ADJ
adj w/ cover tracking + refinement
u32 fib_node_index_t
A typedef of a node index.
fib_node_index_t fib_entry_get_index(const fib_entry_t *fib_entry)
static void fib_entry_src_adj_path_add(fib_entry_src_t *src, const fib_entry_t *entry, fib_path_list_flags_t pl_flags, const fib_route_path_t *paths)
fib_entry_flag_t fib_entry_get_flags_for_source(fib_node_index_t fib_entry_index, fib_source_t source)
@ VNET_SW_INTERFACE_FLAG_UNNUMBERED
fib_path_ext_t * fib_path_ext_list_find_by_path_index(const fib_path_ext_list_t *list, fib_node_index_t path_index)
#define FIB_ENTRY_DBG(_e, _fmt, _args...)
u32 fib_path_get_resolving_interface(fib_node_index_t path_index)
u32 fib_entry_get_resolving_interface(fib_node_index_t entry_index)
void fib_attached_export_covered_added(fib_entry_t *cover, fib_node_index_t covered)
@ FIB_PATH_LIST_WALK_CONTINUE
void fib_path_ext_list_resolve(fib_path_ext_list_t *list, fib_node_index_t path_list_index)
static void fib_entry_src_adj_path_remove(fib_entry_src_t *src, fib_path_list_flags_t pl_flags, const fib_route_path_t *rpaths)
static fib_path_list_walk_rc_t fib_entry_src_adj_path_list_walk(fib_node_index_t pl_index, fib_node_index_t path_index, void *arg)
void fib_entry_src_adj_register(void)
fib_node_index_t fib_path_list_copy_and_path_remove(fib_node_index_t orig_path_list_index, fib_path_list_flags_t flags, const fib_route_path_t *rpaths)
fib_entry_t * fib_entry_get(fib_node_index_t index)
description fragment has unexpected format
void fib_path_list_walk(fib_node_index_t path_list_index, fib_path_list_walk_fn_t func, void *ctx)
A representation of a path as described by a route producer.
#define vec_foreach(var, vec)
Vector iterator.
const static fib_entry_src_vft_t adj_src_vft
static u8 * fib_entry_src_adj_format(fib_entry_src_t *src, u8 *s)
void fib_entry_cover_untrack(fib_entry_t *cover, u32 tracked_index)
fib_node_bw_reason_flag_t bw_reason
u32 fib_entry_cover_track(fib_entry_t *cover, fib_node_index_t covered)
static void fib_entry_src_adj_init(fib_entry_src_t *src)
Source initialisation Function.
fib_entry_src_init_t fesv_init
const fib_prefix_t fe_prefix
The prefix of the route.
static void fib_entry_src_adj_path_swap(fib_entry_src_t *src, const fib_entry_t *entry, fib_path_list_flags_t pl_flags, const fib_route_path_t *paths)
fib_path_ext_t * fib_path_ext_list_push_back(fib_path_ext_list_t *list, fib_node_index_t path_list_index, fib_path_ext_type_t ext_type, const fib_route_path_t *rpath)
@ FIB_PATH_EXT_ADJ_FLAG_REFINES_COVER
fib_path_ext_adj_flags_t fpe_adj_flags
For an ADJ type extension.
A path extension is a per-entry addition to the forwarding information when packets are sent for that...
fib_path_ext_t * fib_path_ext_list_insert(fib_path_ext_list_t *list, fib_node_index_t path_list_index, fib_path_ext_type_t ext_type, const fib_route_path_t *rpath)
fib_node_index_t fib_table_get_less_specific(u32 fib_index, const fib_prefix_t *prefix)
Get the less specific (covering) prefix.
void fib_entry_src_behaviour_register(fib_source_behaviour_t bh, const fib_entry_src_vft_t *vft)
@ FIB_PATH_EXT_ADJ
A adj-source extension indicating the path's refinement criteria result.
@ FIB_PATH_EXT_ADJ_FLAG_NONE
static int fib_entry_src_adj_reactivate(fib_entry_src_t *src, const fib_entry_t *fib_entry)
fib_node_index_t fib_path_list_copy_and_path_add(fib_node_index_t orig_path_list_index, fib_path_list_flags_t flags, const fib_route_path_t *rpaths)
fib_node_index_t fib_path_list_create(fib_path_list_flags_t flags, const fib_route_path_t *rpaths)
vl_api_wireguard_peer_flags_t flags