|
FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
index_t ad_index
The index passed by the provider to identify its delegate instance.
An ADJ delegate virtual function table.
const fib_prefix_t * fib_entry_get_prefix(fib_node_index_t fib_entry_index)
u32 adj_get_sw_if_index(adj_index_t ai)
Return the sw interface index of the adjacency.
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
u32 amd_sibling
The sibling entry on the FIB entry.
void fib_entry_untrack(fib_node_index_t fei, u32 sibling)
Stop tracking a FIB entry.
#define FIB_NODE_INDEX_INVALID
#define pool_put(P, E)
Free an object E in pool P.
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
fib_node_index_t amd_fei
the Fib Entry we are stacked on
void adj_midchain_delegate_restack(adj_index_t ai)
restack a midchain delegate
void adj_nbr_midchain_stack_on_fib_entry(adj_index_t ai, fib_node_index_t fei, fib_forward_chain_type_t fct)
[re]stack a midchain.
struct adj_midchain_delegate_t_ adj_midchain_delegate_t
Midchain stacker delegate.
static const adj_midchain_delegate_t * adj_midchain_from_const_base(const adj_delegate_t *ad)
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.
int adj_delegate_add(ip_adjacency_t *adj, adj_delegate_type_t adt, index_t adi)
Add a delegate to an adjacency.
vnet_main_t * vnet_get_main(void)
void adj_midchain_delegate_unstack(adj_index_t ai)
unstack a midchain delegate (this stacks it on a drop)
u32 fib_node_index_t
A typedef of a node index.
#define pool_get(P, E)
Allocate an object E from a pool P (unspecified alignment).
void adj_delegate_register_type(adj_delegate_type_t type, const adj_delegate_vft_t *vft)
adj_delegate_register_type
@ ADJ_DELEGATE_MIDCHAIN
Stacking of a midchain's nexthop.
void adj_midchain_delegate_stack(adj_index_t ai, u32 fib_index, const fib_prefix_t *pfx)
create/attach a midchain delegate and stack it on the prefix passed
static void adj_midchain_delegate_adj_deleted(adj_delegate_t *ad)
static uword vnet_sw_interface_is_admin_up(vnet_main_t *vnm, u32 sw_if_index)
static void adj_midchain_delegate_restack_i(adj_index_t ai, adj_midchain_delegate_t *amd)
adj_delegate_t * adj_delegate_get(const ip_adjacency_t *adj, adj_delegate_type_t type)
Get a delegate from an adjacency.
fib_forward_chain_type_t fib_forw_chain_type_from_fib_proto(fib_protocol_t proto)
Convert from a fib-protocol to a chain type.
description fragment has unexpected format
#define VLIB_INIT_FUNCTION(x)
static clib_error_t * adj_midchain_delegate_module_init(vlib_main_t *vm)
fib_protocol_t fp_proto
protocol type
void adj_nbr_midchain_unstack(adj_index_t adj_index)
adj_nbr_midchain_unstack
Midchain stacker delegate.
u32 adj_index_t
An index for adjacencies.
const static adj_delegate_vft_t adj_delegate_vft
clib_error_t *() vlib_init_function_t(struct vlib_main_t *vm)
static u8 * adj_midchain_delegate_fmt(const adj_delegate_t *aed, u8 *s)
Print a delegate that represents MIDCHAIN tracking.
static adj_midchain_delegate_t * amd_pool
Pool of delegates.
static ip_adjacency_t * adj_get(adj_index_t adj_index)
Get a pointer to an adjacency object from its index.
adj_delegate_format_t adv_format
Aggregate type for a prefix.