Go to the source code of this file.
|
static void | adj_poison (ip_adjacency_t *adj) |
|
ip_adjacency_t * | adj_alloc (fib_protocol_t proto) |
|
static int | adj_index_is_special (adj_index_t adj_index) |
|
u8 * | format_ip_adjacency (u8 *s, va_list *args) |
| Pretty print helper function for formatting specific adjacencies. More...
|
|
static void | adj_last_lock_gone (ip_adjacency_t *adj) |
|
void | adj_lock (adj_index_t adj_index) |
| An adjacency is a representation of an attached L3 peer. More...
|
|
void | adj_unlock (adj_index_t adj_index) |
| Release a reference counting lock on the adjacency. More...
|
|
u32 | adj_child_add (adj_index_t adj_index, fib_node_type_t child_type, fib_node_index_t child_index) |
| Add a child dependent to an adjacency. More...
|
|
void | adj_child_remove (adj_index_t adj_index, u32 sibling_index) |
| Remove a child dependent. More...
|
|
vnet_link_t | adj_get_link_type (adj_index_t ai) |
| Return the link type of the adjacency. More...
|
|
u32 | adj_get_sw_if_index (adj_index_t ai) |
| Return the sw interface index of the adjacency. More...
|
|
const u8 * | adj_get_rewrite (adj_index_t ai) |
| Return the link type of the adjacency. More...
|
|
static fib_node_t * | adj_get_node (fib_node_index_t index) |
|
static void | adj_node_last_lock_gone (fib_node_t *node) |
|
static fib_node_back_walk_rc_t | adj_back_walk_notify (fib_node_t *node, fib_node_back_walk_ctx_t *ctx) |
|
static clib_error_t * | adj_module_init (vlib_main_t *vm) |
|
static clib_error_t * | adj_show (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd) |
|
ip_adjacency_t * | ip_add_adjacency (ip_lookup_main_t *lm, ip_adjacency_t *copy_adj, u32 n_adj, u32 *adj_index_return) |
|
Definition at line 47 of file adj.c.
Add a child dependent to an adjacency.
The child will thus be informed via its registerd back-walk function when the adjacency state changes.
Definition at line 228 of file adj.c.
Remove a child dependent.
Definition at line 245 of file adj.c.
Return the link type of the adjacency.
Definition at line 262 of file adj.c.
Return the link type of the adjacency.
Definition at line 288 of file adj.c.
Return the sw interface index of the adjacency.
Definition at line 275 of file adj.c.
static int adj_index_is_special |
( |
adj_index_t |
adj_index | ) |
|
|
static |
Definition at line 78 of file adj.c.
An adjacency is a representation of an attached L3 peer.
Adjacency Sub-types:
- neighbour: a representation of an attached L3 peer. Key:{addr,interface,link/ether-type} SHARED
- glean: used to drive ARP/ND for packets destined to a local sub-net. 'glean' mean use the packet's destination address as the target address in the ARP packet. UNSHARED. Only one per-interface.
- midchain: a nighbour adj on a virtual/tunnel interface.
- rewrite: an adj with no key, but with a rewrite string.
The API to create and update the adjacency is very sub-type specific. This is intentional as it encourages the user to carefully consider which adjacency sub-type they are really using, and hence assign it data in the appropriate sub-type space in the union of sub-types. This prevents the adj becoming a disorganised dumping group for 'my features needs a u16 somewhere' data. It is important to enforce this approach as space in the adjacency is a premium, as we need it to fit in 1 cache line.
the API is also based around an index to an ajdacency not a raw pointer. This is so the user doesn't suffer the same limp inducing firearm injuries that the author suffered as the adjacenices can realloc.
Take a reference counting lock on the adjacency
Definition at line 192 of file adj.c.
static void adj_node_last_lock_gone |
( |
fib_node_t * |
node | ) |
|
|
static |
Definition at line 38 of file adj.c.
Release a reference counting lock on the adjacency.
Definition at line 209 of file adj.c.
u8* format_ip_adjacency |
( |
u8 * |
s, |
|
|
va_list * |
args |
|
) |
| |
Pretty print helper function for formatting specific adjacencies.
- Parameters
-
s | - input string to format |
args | - other args passed to format function such as:
|
Definition at line 95 of file adj.c.
The global adjacnecy pool.
Exposed for fast/inline data-plane access
Definition at line 35 of file adj.c.
Initial value:= {
.path = "show adj",
.short_help = "show adj [<adj_index>] [interface]",
}
static clib_error_t * adj_show(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
(constructor) VLIB_CLI_COMMAND (adj_show_command)
Definition at line 428 of file adj.c.
Initial value:= {
}
static fib_node_back_walk_rc_t adj_back_walk_notify(fib_node_t *node, fib_node_back_walk_ctx_t *ctx)
static fib_node_t * adj_get_node(fib_node_index_t index)
static void adj_node_last_lock_gone(fib_node_t *node)
Definition at line 335 of file adj.c.
Adjacency packet counters.
Definition at line 30 of file adj.c.
Definition at line 27 of file adj.c.