FD.io VPP  v18.10-34-gcce845e
Vector Packet Processing
fib_entry_src.h File Reference
+ Include dependency graph for fib_entry_src.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  fib_entry_src_cover_res_t_
 Result from a cover update/change. More...
 
struct  fib_entry_src_vft_t_
 Virtual function table each FIB entry source will register. More...
 

Macros

#define FIB_ENTRY_DBG(_e, _fmt, _args...)
 Debug macro. More...
 
#define FOR_EACH_SRC_ADDED(_entry, _src, _source, action)
 
#define FIB_ENTRY_SRC_VFT_INVOKE(esrc, func, args)
 
#define FIB_ENTRY_SRC_VFT_INVOKE_AND_RETURN(esrc, func, args)
 
#define FIB_ENTRY_SRC_VFT_EXISTS(esrc, func)
 

Typedefs

typedef void(* fib_entry_src_init_t) (fib_entry_src_t *src)
 Source initialisation Function. More...
 
typedef void(* fib_entry_src_deinit_t) (fib_entry_src_t *src)
 Source deinitialisation Function. More...
 
typedef int(* fib_entry_src_activate_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)
 Source activation. More...
 
typedef int(* fib_entry_src_reactivate_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)
 Source re-activation. More...
 
typedef void(* fib_entry_src_deactivate_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)
 Source Deactivate. More...
 
typedef void(* fib_entry_src_add_t) (fib_entry_src_t *src, const fib_entry_t *entry, fib_entry_flag_t flags, dpo_proto_t proto, const dpo_id_t *dpo)
 Source Add. More...
 
typedef void(* fib_entry_src_remove_t) (fib_entry_src_t *src)
 Source Remove. More...
 
typedef struct fib_entry_src_cover_res_t_ fib_entry_src_cover_res_t
 Result from a cover update/change. More...
 
typedef fib_entry_src_cover_res_t(* fib_entry_src_cover_change_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)
 Cover changed. More...
 
typedef fib_entry_src_cover_res_t(* fib_entry_src_cover_update_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)
 Cover updated. More...
 
typedef void(* fib_entry_src_fwd_update_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_source_t best_source)
 Forwarding updated. More...
 
typedef void(* fib_entry_src_installed_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)
 Installed. More...
 
typedef u8 *(* fib_entry_src_format_t) (fib_entry_src_t *src, u8 *s)
 format. More...
 
typedef void(* fib_entry_src_path_add_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_path_list_flags_t pl_flags, const fib_route_path_t *path)
 Source path add the source is adding a new path. More...
 
typedef void(* fib_entry_src_path_remove_t) (fib_entry_src_t *src, fib_path_list_flags_t pl_flags, const fib_route_path_t *path)
 Source path remove the source is remoinvg a path. More...
 
typedef void(* fib_entry_src_path_swap_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_path_list_flags_t pl_flags, const fib_route_path_t *path)
 Source path replace/swap the source is providing a new set of paths. More...
 
typedef void(* fib_entry_src_set_data_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, const void *data)
 Set source specific opaque data. More...
 
typedef const void *(* fib_entry_src_get_data_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)
 Get source specific opaque data. More...
 
typedef const dpo_id_t *(* fib_entry_src_contribute_interpose_t) (const fib_entry_src_t *src, const fib_entry_t *fib_entry)
 Contribute forwarding to interpose inthe chain. More...
 
typedef void(* fib_entry_src_flag_change_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_entry_flag_t new_flags)
 The fib entry flags for this source are changing. More...
 
typedef void(* fib_entry_src_copy_t) (const fib_entry_src_t *orig_src, const fib_entry_t *fib_entry, fib_entry_src_t *copy_src)
 The fib entry flags for this source are changing. More...
 
typedef struct fib_entry_src_vft_t_ fib_entry_src_vft_t
 Virtual function table each FIB entry source will register. More...
 

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...
 
u8fib_entry_src_format (fib_entry_t *entry, fib_source_t source, u8 *s)
 
void fib_entry_src_register (fib_source_t source, const fib_entry_src_vft_t *vft)
 
fib_entry_src_cover_res_t fib_entry_src_action_cover_change (fib_entry_t *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)
 
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)
 
void fib_entry_src_action_reactivate (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)
 
fib_entry_src_flag_t fib_entry_src_action_remove_or_update_inherit (fib_entry_t *fib_entry, fib_source_t source)
 
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)
 
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 *path)
 
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 *path)
 
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 *path)
 
void fib_entry_src_action_installed (const fib_entry_t *fib_entry, fib_source_t source)
 
void fib_entry_src_inherit (const fib_entry_t *cover, fib_entry_t *covered)
 
fib_forward_chain_type_t fib_entry_get_default_chain_type (const fib_entry_t *fib_entry)
 
fib_entry_flag_t fib_entry_get_flags_i (const fib_entry_t *fib_entry)
 
fib_path_list_flags_t fib_entry_src_flags_2_path_list_flags (fib_entry_flag_t eflags)
 
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...
 
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)
 
fib_protocol_t fib_entry_get_proto (const fib_entry_t *fib_entry)
 
dpo_proto_t fib_entry_get_dpo_proto (const fib_entry_t *fib_entry)
 
void fib_entry_source_change (fib_entry_t *fib_entry, fib_source_t old_source, fib_source_t new_source)
 
void fib_entry_src_default_register (void)
 
void fib_entry_src_rr_register (void)
 
void fib_entry_src_interface_register (void)
 
void fib_entry_src_interpose_register (void)
 
void fib_entry_src_default_route_register (void)
 
void fib_entry_src_special_register (void)
 
void fib_entry_src_api_register (void)
 
void fib_entry_src_adj_register (void)
 
void fib_entry_src_mpls_register (void)
 
void fib_entry_src_lisp_register (void)
 
void fib_entry_src_module_init (void)
 

Macro Definition Documentation

#define FIB_ENTRY_DBG (   _e,
  _fmt,
  _args... 
)

Debug macro.

Definition at line 42 of file fib_entry_src.h.

#define FIB_ENTRY_SRC_VFT_EXISTS (   esrc,
  func 
)
Value:
{ \
const fib_entry_src_vft_t *_vft; \
_vft = fib_entry_src_get_vft(esrc); \
(_vft->func); \
}
const fib_entry_src_vft_t * fib_entry_src_get_vft(const fib_entry_src_t *esrc)
Get the VFT for a given source.
Definition: fib_entry_src.c:37
Virtual function table each FIB entry source will register.

Definition at line 248 of file fib_entry_src.h.

#define FIB_ENTRY_SRC_VFT_INVOKE (   esrc,
  func,
  args 
)
Value:
{ \
const fib_entry_src_vft_t *_vft; \
_vft = fib_entry_src_get_vft(esrc); \
if (_vft->func) \
_vft->func args; \
}
const fib_entry_src_vft_t * fib_entry_src_get_vft(const fib_entry_src_t *esrc)
Get the VFT for a given source.
Definition: fib_entry_src.c:37
Virtual function table each FIB entry source will register.

Definition at line 232 of file fib_entry_src.h.

#define FIB_ENTRY_SRC_VFT_INVOKE_AND_RETURN (   esrc,
  func,
  args 
)
Value:
{ \
const fib_entry_src_vft_t *_vft; \
_vft = fib_entry_src_get_vft(esrc); \
if (_vft->func) \
return (_vft->func args); \
}
const fib_entry_src_vft_t * fib_entry_src_get_vft(const fib_entry_src_t *esrc)
Get the VFT for a given source.
Definition: fib_entry_src.c:37
Virtual function table each FIB entry source will register.

Definition at line 240 of file fib_entry_src.h.

#define FOR_EACH_SRC_ADDED (   _entry,
  _src,
  _source,
  action 
)
Value:
{ \
vec_foreach(_src, (_entry)->fe_srcs) \
{ \
if (_src->fes_flags & FIB_ENTRY_SRC_FLAG_ADDED) { \
_source = (_src)->fes_src; \
action; \
} \
} \
}
Definition: fib_entry.h:334
#define vec_foreach(var, vec)
Vector iterator.

Definition at line 221 of file fib_entry_src.h.

Typedef Documentation

typedef int(* fib_entry_src_activate_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)

Source activation.

Called when the source is the new best source on the entry. Return non-zero if the entry can now install, 0 otherwise

Definition at line 59 of file fib_entry_src.h.

typedef void(* fib_entry_src_add_t) (fib_entry_src_t *src, const fib_entry_t *entry, fib_entry_flag_t flags, dpo_proto_t proto, const dpo_id_t *dpo)

Source Add.

Called when the source is added to the entry

Definition at line 80 of file fib_entry_src.h.

typedef const dpo_id_t*(* fib_entry_src_contribute_interpose_t) (const fib_entry_src_t *src, const fib_entry_t *fib_entry)

Contribute forwarding to interpose inthe chain.

Definition at line 178 of file fib_entry_src.h.

typedef void(* fib_entry_src_copy_t) (const fib_entry_src_t *orig_src, const fib_entry_t *fib_entry, fib_entry_src_t *copy_src)

The fib entry flags for this source are changing.

Definition at line 191 of file fib_entry_src.h.

typedef fib_entry_src_cover_res_t(* fib_entry_src_cover_change_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)

Cover changed.

the source should re-evaluate its cover.

Definition at line 102 of file fib_entry_src.h.

Result from a cover update/change.

typedef fib_entry_src_cover_res_t(* fib_entry_src_cover_update_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)

Cover updated.

The cover the source has, has updated (i.e. its forwarding) the source may need to re-evaluate.

Definition at line 110 of file fib_entry_src.h.

typedef void(* fib_entry_src_deactivate_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)

Source Deactivate.

Called when the source is no longer best source on the entry

Definition at line 73 of file fib_entry_src.h.

typedef void(* fib_entry_src_deinit_t) (fib_entry_src_t *src)

Source deinitialisation Function.

Definition at line 53 of file fib_entry_src.h.

typedef void(* fib_entry_src_flag_change_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_entry_flag_t new_flags)

The fib entry flags for this source are changing.

Definition at line 184 of file fib_entry_src.h.

typedef u8*(* fib_entry_src_format_t) (fib_entry_src_t *src, u8 *s)

format.

Definition at line 133 of file fib_entry_src.h.

typedef void(* fib_entry_src_fwd_update_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_source_t best_source)

Forwarding updated.

Notification that the forwarding information for the entry has been updated. This notification is sent to all sources, not just the active best.

Definition at line 119 of file fib_entry_src.h.

typedef const void*(* fib_entry_src_get_data_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)

Get source specific opaque data.

Definition at line 172 of file fib_entry_src.h.

typedef void(* fib_entry_src_init_t) (fib_entry_src_t *src)

Source initialisation Function.

Definition at line 48 of file fib_entry_src.h.

typedef void(* fib_entry_src_installed_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)

Installed.

Notification that the source is now installed as the entry's forwarding source.

Definition at line 127 of file fib_entry_src.h.

typedef void(* fib_entry_src_path_add_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_path_list_flags_t pl_flags, const fib_route_path_t *path)

Source path add the source is adding a new path.

Definition at line 140 of file fib_entry_src.h.

typedef void(* fib_entry_src_path_remove_t) (fib_entry_src_t *src, fib_path_list_flags_t pl_flags, const fib_route_path_t *path)

Source path remove the source is remoinvg a path.

Definition at line 149 of file fib_entry_src.h.

typedef void(* fib_entry_src_path_swap_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, fib_path_list_flags_t pl_flags, const fib_route_path_t *path)

Source path replace/swap the source is providing a new set of paths.

Definition at line 157 of file fib_entry_src.h.

typedef int(* fib_entry_src_reactivate_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry)

Source re-activation.

Called when the source is updated and remains the best source.

Definition at line 66 of file fib_entry_src.h.

typedef void(* fib_entry_src_remove_t) (fib_entry_src_t *src)

Source Remove.

Definition at line 89 of file fib_entry_src.h.

typedef void(* fib_entry_src_set_data_t) (fib_entry_src_t *src, const fib_entry_t *fib_entry, const void *data)

Set source specific opaque data.

Definition at line 165 of file fib_entry_src.h.

Virtual function table each FIB entry source will register.

Function Documentation

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:

fib_forward_chain_type_t fib_entry_get_default_chain_type ( const fib_entry_t fib_entry)

Definition at line 75 of file fib_entry.c.

dpo_proto_t fib_entry_get_dpo_proto ( const fib_entry_t fib_entry)

Definition at line 69 of file fib_entry.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:

fib_protocol_t fib_entry_get_proto ( const fib_entry_t fib_entry)

Definition at line 63 of file fib_entry.c.

+ Here is the caller graph for this function:

void fib_entry_source_change ( fib_entry_t fib_entry,
fib_source_t  old_source,
fib_source_t  new_source 
)

Definition at line 826 of file fib_entry.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:

fib_entry_src_cover_res_t fib_entry_src_action_cover_change ( fib_entry_t 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:

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 path 
)

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 path 
)

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 path 
)

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:

void fib_entry_src_adj_register ( void  )

Definition at line 397 of file fib_entry_src_adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_api_register ( void  )

Definition at line 163 of file fib_entry_src_api.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_default_register ( void  )

Definition at line 114 of file fib_entry_src_default.c.

+ Here is the call graph for this function:

void fib_entry_src_default_route_register ( void  )

Definition at line 53 of file fib_entry_src_default_route.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 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:

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_interface_register ( void  )

Definition at line 214 of file fib_entry_src_interface.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_interpose_register ( void  )

Definition at line 367 of file fib_entry_src_interpose.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_lisp_register ( void  )

Definition at line 130 of file fib_entry_src_lisp.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 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_mpls_register ( void  )

Definition at line 194 of file fib_entry_src_mpls.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:

void fib_entry_src_rr_register ( void  )

Definition at line 298 of file fib_entry_src_rr.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void fib_entry_src_special_register ( void  )

Definition at line 74 of file fib_entry_src_special.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function: