Go to the source code of this file.
|
static uword | adj_midchain_tx_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, int interface_count) |
|
static u8 * | format_adj_midchain_tx_trace (u8 *s, va_list *args) |
|
static uword | adj_midchain_tx (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame) |
|
static uword | adj_midchain_tx_no_count (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame) |
|
u8 | adj_is_midchain (adj_index_t ai) |
|
static u32 | adj_get_midchain_node (vnet_link_t link) |
|
static u8 | adj_midchain_get_feature_arc_index_for_link_type (const ip_adjacency_t *adj) |
|
static u32 | adj_nbr_midchain_get_tx_node (ip_adjacency_t *adj) |
|
void | adj_midchain_teardown (ip_adjacency_t *adj) |
| adj_midchain_setup More...
|
|
void | adj_midchain_setup (adj_index_t adj_index, adj_midchain_fixup_t fixup, const void *data, adj_flags_t flags) |
| adj_midchain_setup More...
|
|
void | adj_nbr_midchain_update_rewrite (adj_index_t adj_index, adj_midchain_fixup_t fixup, const void *fixup_data, adj_flags_t flags, u8 *rewrite) |
| adj_nbr_midchain_update_rewrite More...
|
|
void | adj_nbr_midchain_update_next_node (adj_index_t adj_index, u32 next_node) |
| Update the VLIB node to which packets are sent post processing. More...
|
|
void | adj_nbr_midchain_reset_next_node (adj_index_t adj_index) |
| Return the adjacency's next node to its default value. More...
|
|
void | adj_nbr_midchain_unstack (adj_index_t adj_index) |
| adj_nbr_midchain_unstack More...
|
|
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. More...
|
|
void | adj_nbr_midchain_stack (adj_index_t adj_index, const dpo_id_t *next) |
| adj_nbr_midchain_stack More...
|
|
int | adj_ndr_midchain_recursive_loop_detect (adj_index_t ai, fib_node_index_t **entry_indicies) |
| descend the FIB graph looking for loops More...
|
|
u8 * | format_adj_midchain (u8 *s, va_list *ap) |
| Format a midchain adjacency. More...
|
|
static void | adj_dpo_lock (dpo_id_t *dpo) |
|
static void | adj_dpo_unlock (dpo_id_t *dpo) |
|
void | adj_midchain_module_init (void) |
| Module initialisation. More...
|
|
◆ adj_midchain_tx_trace_t
Trace data for packets traversing the midchain tx node.
◆ adj_dpo_lock()
static void adj_dpo_lock |
( |
dpo_id_t * |
dpo | ) |
|
|
static |
◆ adj_dpo_unlock()
static void adj_dpo_unlock |
( |
dpo_id_t * |
dpo | ) |
|
|
static |
◆ adj_get_midchain_node()
◆ adj_is_midchain()
◆ adj_midchain_get_feature_arc_index_for_link_type()
static u8 adj_midchain_get_feature_arc_index_for_link_type |
( |
const ip_adjacency_t * |
adj | ) |
|
|
static |
◆ adj_midchain_module_init()
void adj_midchain_module_init |
( |
void |
| ) |
|
◆ adj_midchain_setup()
adj_midchain_setup
Setup the adj as a mid-chain
Definition at line 378 of file adj_midchain.c.
◆ adj_midchain_teardown()
adj_midchain_setup
Setup the adj as a mid-chain
Definition at line 357 of file adj_midchain.c.
◆ adj_midchain_tx()
◆ adj_midchain_tx_inline()
◆ adj_midchain_tx_no_count()
◆ adj_nbr_midchain_get_tx_node()
◆ adj_nbr_midchain_reset_next_node()
void adj_nbr_midchain_reset_next_node |
( |
adj_index_t |
adj_index | ) |
|
Return the adjacency's next node to its default value.
- Parameters
-
adj_index | The index of the neighbour adjacency. |
Definition at line 493 of file adj_midchain.c.
◆ adj_nbr_midchain_stack()
adj_nbr_midchain_stack
[re]stack a midchain.
Definition at line 627 of file adj_midchain.c.
◆ adj_nbr_midchain_stack_on_fib_entry()
[re]stack a midchain.
'Stacking' is the act of forming parent-child relationships in the data-plane graph. Since function performs recursive loop detection.
- Parameters
-
adj_index | The index of the midchain to stack |
fei | The FIB entry to stack on |
fct | The chain type to use from the fib entry fowarding |
Definition at line 556 of file adj_midchain.c.
◆ adj_nbr_midchain_unstack()
adj_nbr_midchain_unstack
unstack a midchain.
Unstack the adj. stack it on drop
Definition at line 524 of file adj_midchain.c.
◆ adj_nbr_midchain_update_next_node()
void adj_nbr_midchain_update_next_node |
( |
adj_index_t |
adj_index, |
|
|
u32 |
node_index |
|
) |
| |
Update the VLIB node to which packets are sent post processing.
- Parameters
-
adj_index | The index of the neighbour adjacency. |
node | node-index to send to |
Definition at line 467 of file adj_midchain.c.
◆ adj_nbr_midchain_update_rewrite()
adj_nbr_midchain_update_rewrite
Midchain Adjacency sub-type.
Update the adjacency's rewrite string. A NULL string implies the rewrite is reset (i.e. when ARP/ND entry is gone). NB: the adj being updated may be handling traffic in the DP.
Definition at line 434 of file adj_midchain.c.
◆ adj_ndr_midchain_recursive_loop_detect()
descend the FIB graph looking for loops
- Parameters
-
ai | The adj index to traverse |
entry_indicies) | A pointer to a vector of FIB entries already visited. |
Definition at line 645 of file adj_midchain.c.
◆ format_adj_midchain()
u8* format_adj_midchain |
( |
u8 * |
s, |
|
|
va_list * |
ap |
|
) |
| |
◆ format_adj_midchain_tx_trace()
static u8* format_adj_midchain_tx_trace |
( |
u8 * |
s, |
|
|
va_list * |
args |
|
) |
| |
|
static |
◆ adj_midchain_dpo_vft
Initial value:= {
}
u32 adj_dpo_get_urpf(const dpo_id_t *dpo)
static void adj_dpo_unlock(dpo_id_t *dpo)
u8 * format_adj_midchain(u8 *s, va_list *ap)
Format a midchain adjacency.
static void adj_dpo_lock(dpo_id_t *dpo)
Definition at line 713 of file adj_midchain.c.
◆ adj_midchain_tx_no_count_node
Initial value:= {
.name = "adj-midchain-tx-no-count",
.vector_size =
sizeof (
u32),
.sibling_of = "adj-midchain-tx",
}
static uword adj_midchain_tx_no_count(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
static u8 * format_adj_midchain_tx_trace(u8 *s, va_list *args)
(constructor) VLIB_REGISTER_NODE (adj_midchain_tx_no_count_node)
Definition at line 242 of file adj_midchain.c.
◆ adj_midchain_tx_node
Initial value:= {
.name = "adj-midchain-tx",
.vector_size =
sizeof (
u32),
.n_next_nodes = 1,
.next_nodes = {
[0] = "error-drop",
},
}
static uword adj_midchain_tx(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
static u8 * format_adj_midchain_tx_trace(u8 *s, va_list *args)
(constructor) VLIB_REGISTER_NODE (adj_midchain_tx_node)
Definition at line 221 of file adj_midchain.c.
◆ midchain_ethernet_nodes
const char* const midchain_ethernet_nodes[] |
|
static |
Initial value:=
{
"adj-l2-midchain",
NULL,
}
Definition at line 742 of file adj_midchain.c.
◆ midchain_ip4_nodes
const char* const midchain_ip4_nodes[] |
|
static |
Initial value:=
{
"ip4-midchain",
NULL,
}
The per-protocol VLIB graph nodes that are assigned to a midchain object.
this means that these graph nodes are ones from which a midchain is the parent object in the DPO-graph.
Definition at line 727 of file adj_midchain.c.
◆ midchain_ip6_nodes
const char* const midchain_ip6_nodes[] |
|
static |
Initial value:=
{
"ip6-midchain",
NULL,
}
Definition at line 732 of file adj_midchain.c.
◆ midchain_mpls_nodes
const char* const midchain_mpls_nodes[] |
|
static |
Initial value:=
{
"mpls-midchain",
NULL,
}
Definition at line 737 of file adj_midchain.c.
◆ midchain_nodes
Initial value:=
{
}
static const char *const midchain_nsh_nodes[]
static const char *const midchain_ip6_nodes[]
static const char *const midchain_ip4_nodes[]
The per-protocol VLIB graph nodes that are assigned to a midchain object.
static const char *const midchain_mpls_nodes[]
static const char *const midchain_ethernet_nodes[]
Definition at line 753 of file adj_midchain.c.
◆ midchain_nsh_nodes
const char* const midchain_nsh_nodes[] |
|
static |
Initial value:=
{
"adj-nsh-midchain",
NULL,
}
Definition at line 747 of file adj_midchain.c.