|
FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
Go to the documentation of this file.
66 case FIB_SOURCE_CMP_BETTER:
67 case FIB_SOURCE_CMP_EQUAL:
69 case FIB_SOURCE_CMP_WORSE:
156 src->u.interpose.fesi_cover =
164 src->u.interpose.fesi_sibling =
225 (best_src, fib_entry));
265 if (
src->u.interpose.fesi_cover !=
312 return (&
src->u.interpose.fesi_dpo);
355 s =
format(s,
" cover:%d interpose:\n%U%U",
356 src->u.interpose.fesi_cover,
fib_entry_flag_t fib_entry_get_flags_i(const fib_entry_t *fib_entry)
union fib_entry_src_t_::@292 u
Source specific info.
@ FIB_PATH_LIST_FLAG_DROP
Result from a cover update/change.
@ FIB_NODE_BW_REASON_FLAG_NONE
enum dpo_proto_t_ dpo_proto_t
Data path protocol.
const fib_entry_src_vft_t * fib_entry_src_get_vft(const fib_entry_src_t *esrc)
Get the VFT for a given source.
static int fib_entry_src_interpose_activate(fib_entry_src_t *src, const fib_entry_t *fib_entry)
@ FIB_ENTRY_FLAG_ATTACHED
Information related to the source of a FIB entry.
#define FIB_NODE_INDEX_INVALID
static void fib_entry_src_interpose_remove(fib_entry_src_t *src)
void fib_entry_src_rr_resolve_via_connected(fib_entry_src_t *src, const fib_entry_t *fib_entry, const fib_entry_t *cover)
fib_source_priority_cmp_t fib_source_cmp(fib_source_t s1, fib_source_t s2)
#define FIB_ENTRY_SRC_VFT_INVOKE(_fe, esrc, func, args)
const static fib_entry_src_vft_t interpose_src_vft
struct fib_entry_src_t_::@292::@294 interpose
@ FIB_ENTRY_FLAG_INTERPOSE
@ FIB_NODE_BW_REASON_FLAG_EVALUATE
void fib_path_list_unlock(fib_node_index_t path_list_index)
Virtual function table each FIB entry source will register.
enum fib_entry_flag_t_ fib_entry_flag_t
const dpo_id_t * fib_entry_src_interpose_contribute(const fib_entry_src_t *src, const fib_entry_t *fib_entry)
Contribute forwarding to interpose in the chain.
static void fib_entry_src_interpose_init(fib_entry_src_t *src)
u32 fe_fib_index
The index of the FIB table this entry is in.
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_interpose_flag_change(fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_entry_flag_t new_flags)
static fib_entry_src_t * fib_entry_src_rr_get_next_best(const fib_entry_src_t *src, const fib_entry_t *fib_entry)
@ FIB_SOURCE_BH_INTERPOSE
interpose
dpo_proto_t fib_proto_to_dpo(fib_protocol_t fib_proto)
u8 * format_dpo_id(u8 *s, va_list *args)
Format a DPO_id_t oject.
static void fib_entry_src_interpose_set_data(fib_entry_src_t *src, const fib_entry_t *fib_entry, const void *data)
void fib_entry_src_rr_use_covers_pl(fib_entry_src_t *src, const fib_entry_t *fib_entry, const fib_entry_t *cover)
#define FIB_ENTRY_FLAGS_RR_INHERITED
fib_node_index_t fib_path_list_create_special(dpo_proto_t nh_proto, fib_path_list_flags_t flags, const dpo_id_t *dpo)
void dpo_copy(dpo_id_t *dst, const dpo_id_t *src)
atomic copy a data-plane object.
fib_entry_t * fib_entry_get(fib_node_index_t index)
description fragment has unexpected format
fib_entry_src_cover_res_t fib_entry_src_rr_cover_update(fib_entry_src_t *src, const fib_entry_t *fib_entry)
#define FOR_EACH_SRC_ADDED(_entry, _src, _source, action)
fib_protocol_t fp_proto
protocol type
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)
void fib_path_list_lock(fib_node_index_t path_list_index)
const dpo_id_t * drop_dpo_get(dpo_proto_t proto)
fib_entry_src_init_t fesv_init
const fib_prefix_t fe_prefix
The prefix of the route.
static fib_entry_src_cover_res_t fib_entry_src_interpose_cover_change(fib_entry_src_t *src, const fib_entry_t *fib_entry)
fib_entry_src_flag_t fes_flags
Flags on the source.
fib_entry_src_activate_t fesv_activate
void fib_entry_src_interpose_register(void)
fib_node_index_t fib_table_get_less_specific(u32 fib_index, const fib_prefix_t *prefix)
Get the less specific (covering) prefix.
static u8 * fib_entry_src_interpose_format(fib_entry_src_t *src, u8 *s)
The identity of a DPO is a combination of its type and its instance number/index of objects of that t...
enum fib_source_t_ fib_source_t
The different sources that can create a route.
void fib_entry_src_behaviour_register(fib_source_behaviour_t bh, const fib_entry_src_vft_t *vft)
static int fib_entry_src_interpose_reactivate(fib_entry_src_t *src, const fib_entry_t *fib_entry)
static void fib_entry_src_interpose_add(fib_entry_src_t *src, const fib_entry_t *entry, fib_entry_flag_t flags, dpo_proto_t proto, const dpo_id_t *dpo)
static void fib_entry_src_interpose_copy(const fib_entry_src_t *orig_src, const fib_entry_t *fib_entry, fib_entry_src_t *copy_src)
fib_node_index_t fes_pl
The path-list created by the source.
static void fib_entry_src_interpose_deinit(fib_entry_src_t *src)
void dpo_reset(dpo_id_t *dpo)
reset a DPO ID The DPO will be unlocked.
static void fib_entry_src_interpose_deactivate(fib_entry_src_t *src, const fib_entry_t *fib_entry)
Source Deactivate.
@ FIB_ENTRY_SRC_FLAG_CONTRIBUTING
vl_api_wireguard_peer_flags_t flags