112 fd_track.fedt_node)));
fib_node_index_t fib_entry_track(u32 fib_index, const fib_prefix_t *prefix, fib_node_type_t child_type, index_t child_index, u32 *sibling)
Trackers are used on FIB entries by objects that which to track the changing state of the entry...
Recursive resolution source.
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.
void fib_node_init(fib_node_t *node, fib_node_type_t type)
u32 fib_entry_child_add(fib_node_index_t fib_entry_index, fib_node_type_t child_type, fib_node_index_t child_index)
enum fib_node_back_walk_rc_t_ fib_node_back_walk_rc_t
Return code from a back walk function.
void fib_entry_child_remove(fib_node_index_t fib_entry_index, u32 sibling_index)
fib_entry_delegate_t * fib_entry_delegate_find(const fib_entry_t *fib_entry, fib_entry_delegate_type_t type)
u32 index_t
A Data-Path Object is an object that represents actions that are applied to packets are they are swit...
#define STRUCT_OFFSET_OF(t, f)
fib_node_index_t fd_entry_index
The FIB entry object to which the delagate is attached.
u32 fib_node_child_add(fib_node_type_t parent_type, fib_node_index_t parent_index, fib_node_type_t type, fib_node_index_t index)
void fib_node_register_type(fib_node_type_t type, const fib_node_vft_t *vft)
fib_node_register_type
fib_entry_delegate_t * fib_entry_delegate_get(index_t fedi)
void fib_entry_delegate_remove(fib_entry_t *fib_entry, fib_entry_delegate_type_t type)
void fib_walk_sync(fib_node_type_t parent_type, fib_node_index_t parent_index, fib_node_back_walk_ctx_t *ctx)
Back walk all the children of a FIB node.
Aggregate type for a prefix.
static fib_entry_delegate_t * fib_entry_delegate_from_fib_node(fib_node_t *node)
fib_entry_delegate_track_t fd_track
tracker state
static void fib_entry_track_last_lock_gone(fib_node_t *node)
static fib_entry_delegate_t * fib_entry_track_delegate_add(u32 fib_index, const fib_prefix_t *prefix)
static void fib_entry_track_show_memory(void)
static fib_node_back_walk_rc_t fib_entry_track_back_walk_notify(fib_node_t *node, fib_node_back_walk_ctx_t *ctx)
fib_node_type_t fn_type
The node's type.
An node in the FIB graph.
fib_node_index_t fib_table_entry_special_add(u32 fib_index, const fib_prefix_t *prefix, fib_source_t source, fib_entry_flag_t flags)
Add a 'special' entry to the FIB.
void fib_table_entry_delete_index(fib_node_index_t fib_entry_index, fib_source_t source)
Delete a FIB entry.
u32 fib_node_index_t
A typedef of a node index.
fib_entry_t * fib_entry_get(fib_node_index_t index)
Context passed between object during a back walk.
void fib_entry_untrack(fib_node_index_t fei, u32 sibling)
Stop tracking a FIB entry.
static fib_node_t * fib_entry_track_get_node(fib_node_index_t index)
void fib_entry_track_module_init(void)
void fib_node_child_remove(fib_node_type_t parent_type, fib_node_index_t parent_index, fib_node_index_t sibling_index)
fib_node_index_t fib_entry_delegate_get_index(const fib_entry_delegate_t *fed)
#define INDEX_INVALID
Invalid index - used when no index is known blazoned capitals INVALID speak volumes where ~0 does not...
A FIB graph nodes virtual function table.
enum fib_node_type_t_ fib_node_type_t
The types of nodes in a FIB graph.
A Delagate is a means to implmenet the Delagation design pattern; the extension of an objects functio...
fib_entry_delegate_t * fib_entry_delegate_find_or_add(fib_entry_t *fib_entry, fib_entry_delegate_type_t fdt)