|
FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
Go to the documentation of this file.
163 if (*existing == entry_index)
195 vec_add1(import->faei_importeds, entry_index);
255 import->faei_export_fib = export_fib;
256 import->faei_prefix = fib_entry->
fe_prefix;
258 import->faei_export_sibling = ~0;
263 import->faei_export_entry =
265 &import->faei_prefix);
273 import->faei_export_entry =
275 &import->faei_prefix);
304 import->faei_export_sibling =
347 if (~0 != import->faei_export_sibling)
350 import->faei_export_sibling);
352 import->faei_export_sibling = ~0;
479 export_fib =
import->faei_export_fib;
521 s =
format(s,
"export-entry:%d ", import->faei_export_entry);
522 s =
format(s,
"export-sibling:%d ", import->faei_export_sibling);
523 s =
format(s,
"exporter:%d ", import->faei_exporter);
524 s =
format(s,
"export-fib:%d ", import->faei_export_fib);
526 s =
format(s,
"import-entry:%d ", import->faei_import_entry);
527 s =
format(s,
"import-fib:%d ", import->faei_import_fib);
529 s =
format(s,
"importeds:[");
551 s =
format(s,
"importers:[");
u8 * fib_ae_export_format(fib_node_index_t expi, u8 *s)
int dpo_is_drop(const dpo_id_t *dpo)
The Drop DPO will drop all packets, no questions asked.
void fib_entry_unlock(fib_node_index_t fib_entry_index)
@ FIB_ENTRY_DELEGATE_ATTACHED_EXPORT
fib_entry_flag_t fib_entry_get_flags_i(const fib_entry_t *fib_entry)
@ FIB_ENTRY_DELEGATE_ATTACHED_IMPORT
Attached import/export functionality.
index_t dpoi_index
the index of objects of that type
void fib_entry_delegate_remove(fib_entry_t *fib_entry, fib_entry_delegate_type_t type)
fib_node_index_t fib_table_entry_special_dpo_add(u32 fib_index, const fib_prefix_t *prefix, fib_source_t source, fib_entry_flag_t flags, const dpo_id_t *dpo)
Add a 'special' entry to the FIB that links to the DPO passed A special entry is an entry that the FI...
static walk_rc_t fib_entry_covered_walk_import(fib_entry_t *cover, fib_node_index_t covered, void *ctx)
Call back when walking a connected prefix's covered prefixes for import.
const fib_prefix_t * fib_entry_get_prefix(fib_node_index_t fib_entry_index)
void fib_attached_export_cover_update(fib_entry_t *fib_entry)
If this entry is tracking a cover (in another table) then that cover has been updated.
u8 * fib_ae_import_format(fib_node_index_t impi, u8 *s)
int fib_prefix_cmp(const fib_prefix_t *p1, const fib_prefix_t *p2)
Compare two prefixes for equality.
static fib_ae_import_t * fib_ae_import_pool
void fib_table_entry_delete(u32 fib_index, const fib_prefix_t *prefix, fib_source_t source)
Delete a FIB entry.
u32 faei_export_sibling
the sibling index on the cover
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
void fib_prefix_copy(fib_prefix_t *dst, const fib_prefix_t *src)
Copy a prefix.
static void fib_entry_import_remove(fib_ae_import_t *import, fib_node_index_t entry_index)
@ FIB_ENTRY_FLAG_ATTACHED
#define FIB_NODE_INDEX_INVALID
fib_node_index_t faei_export_entry
The entry in the export table that this importer is importing covereds from.
static void fib_attached_export_cover_modified_i(fib_entry_t *fib_entry)
fib_node_index_t faei_import_entry
The attached entry in the import table.
#define pool_put(P, E)
Free an object E in pool P.
fib_node_index_t fib_table_lookup(u32 fib_index, const fib_prefix_t *prefix)
Perfom a longest prefix match in the non-forwarding table.
static void fib_ae_export_import_add(fib_ae_export_t *export, fib_ae_import_t *import)
@ FIB_ENTRY_FLAG_EXCLUSIVE
fib_entry_delegate_t * fib_entry_delegate_find(const fib_entry_t *fib_entry, fib_entry_delegate_type_t type)
void fib_attached_export_covered_removed(fib_entry_t *cover, fib_node_index_t covered)
void fib_entry_cover_walk(fib_entry_t *cover, fib_entry_covered_walk_t walk, void *args)
static fib_ae_export_t * fib_ae_export_pool
void fib_table_entry_special_remove(u32 fib_index, const fib_prefix_t *prefix, fib_source_t source)
Remove a 'special' entry from the FIB.
struct fib_ae_import_t_ fib_ae_import_t
A description of the need to import routes from the export table.
const dpo_id_t * load_balance_get_bucket(index_t lbi, u32 bucket)
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
u32 fe_fib_index
The index of the FIB table this entry is in.
#define vec_add1(V, E)
Add 1 element to end of vector (unspecified alignment).
static fib_ae_export_t * fib_entry_ae_add_or_lock(fib_node_index_t connected)
void fib_entry_lock(fib_node_index_t fib_entry_index)
const dpo_id_t * fib_entry_contribute_ip_forwarding(fib_node_index_t fib_entry_index)
fib_node_index_t faee_ei
THe connected entry this export is acting on behalf of.
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)
void fib_attached_export_import(fib_entry_t *fib_entry, fib_node_index_t export_fib)
FIB attached export.
static int dpo_id_is_valid(const dpo_id_t *dpoi)
Return true if the DPO object is valid, i.e.
fib_entry_delegate_t * fib_entry_delegate_find_or_add(fib_entry_t *fib_entry, fib_entry_delegate_type_t fdt)
fib_node_index_t * faee_importers
The vector/list of import tracker indicies.
#define pool_get(P, E)
Allocate an object E from a pool P (unspecified alignment).
fib_node_index_t fd_index
Valid for the attached import cases.
#define ALWAYS_ASSERT(truth)
void fib_attached_export_cover_change(fib_entry_t *fib_entry)
If this entry is tracking a cover (in another table) then that cover has changed.
#define vec_search(v, E)
Search a vector for the index of the entry that matches.
void fib_attached_export_covered_added(fib_entry_t *cover, fib_node_index_t covered)
void fib_attached_export_purge(fib_entry_t *fib_entry)
All the imported entries need to be purged.
fib_node_index_t fib_table_lookup_exact_match(u32 fib_index, const fib_prefix_t *prefix)
Perfom an exact match in the non-forwarding table.
#define vec_free(V)
Free vector's memory (no header).
fib_entry_t * fib_entry_get(fib_node_index_t index)
description fragment has unexpected format
A description of the need to export routes to one or more export tables.
fib_node_index_t faei_import_fib
The FIB index we are importing into.
u8 * format_fib_prefix(u8 *s, va_list *args)
#define vec_foreach(var, vec)
Vector iterator.
fib_entry_flag_t fib_entry_get_flags(fib_node_index_t fib_entry_index)
void fib_entry_cover_untrack(fib_entry_t *cover, u32 tracked_index)
u32 fib_entry_cover_track(fib_entry_t *cover, fib_node_index_t covered)
clib_memset(h->entries, 0, sizeof(h->entries[0]) *entries)
const fib_prefix_t fe_prefix
The prefix of the route.
fib_node_index_t faei_exporter
The index of the exporter tracker.
u32 faee_locks
Reference counting locks.
@ FIB_SOURCE_AE
Attached Export source.
struct fib_ae_export_t_ fib_ae_export_t
A description of the need to export routes to one or more export tables.
The identity of a DPO is a combination of its type and its instance number/index of objects of that t...
fib_node_index_t faei_export_fib
The FIB index and prefix we are tracking.
A Delagate is a means to implmenet the Delagation design pattern; the extension of an objects functio...
static void fib_entry_import_add(fib_ae_import_t *import, fib_node_index_t entry_index)
enum walk_rc_t_ walk_rc_t
Walk return code.
Aggregate type for a prefix.
#define vec_del1(v, i)
Delete the element at index I.
A description of the need to import routes from the export table.
fib_node_index_t * faei_importeds
A vector/list of imported entry indicies.