FD.io VPP  v17.07.01-10-g3be13f0
Vector Packet Processing
adj.c File Reference
+ Include dependency graph for adj.c:

Go to the source code of this file.

Data Structures

struct  adj_feature_update_t_
 

Macros

#define ADJ_FROM_NODE(_node)   ((ip_adjacency_t*)((char*)_node - STRUCT_OFFSET_OF(ip_adjacency_t, ia_node)))
 

Typedefs

typedef struct adj_feature_update_t_ adj_feature_update_ctx_t
 

Functions

static void adj_poison (ip_adjacency_t *adj)
 
ip_adjacency_tadj_alloc (fib_protocol_t proto)
 
static int adj_index_is_special (adj_index_t adj_index)
 
u8format_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)
 Take a reference counting lock on the adjacency. 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...
 
static adj_walk_rc_t adj_feature_update_walk_cb (adj_index_t ai, void *arg)
 
void adj_feature_update (u32 sw_if_index, u8 arc_index, u8 is_enable)
 Notify the adjacency subsystem that the features settings for an interface have changed. More...
 
void adj_walk (u32 sw_if_index, adj_walk_cb_t cb, void *ctx)
 Walk the Adjacencies on a given interface. 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...
 
int adj_is_up (adj_index_t ai)
 Return true if the adjacency is 'UP', i.e. More...
 
const u8adj_get_rewrite (adj_index_t ai)
 Return the rewrite string of the adjacency. More...
 
static fib_node_tadj_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_tadj_module_init (vlib_main_t *vm)
 
static clib_error_tadj_show (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tadj_cli_counters_set (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 CLI invoked function to enable/disable per-adj counters. More...
 

Variables

vlib_combined_counter_main_t adjacency_counters
 Adjacency packet counters. More...
 
ip_adjacency_tadj_pool
 The global adjacnecy pool. More...
 
int adj_per_adj_counters
 Global Config for enabling per-adjacency counters. More...
 
static const fib_node_vft_t adj_vft
 
static vlib_cli_command_t adj_show_command
 (constructor) VLIB_CLI_COMMAND (adj_show_command) More...
 
static vlib_cli_command_t adj_cli_counters_set_command
 (constructor) VLIB_CLI_COMMAND (adj_cli_counters_set_command) More...
 

Macro Definition Documentation

#define ADJ_FROM_NODE (   _node)    ((ip_adjacency_t*)((char*)_node - STRUCT_OFFSET_OF(ip_adjacency_t, ia_node)))

Definition at line 431 of file adj.c.

Typedef Documentation

Function Documentation

ip_adjacency_t* adj_alloc ( fib_protocol_t  proto)

Definition at line 48 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_node_back_walk_rc_t adj_back_walk_notify ( fib_node_t node,
fib_node_back_walk_ctx_t ctx 
)
static

Definition at line 441 of file adj.c.

u32 adj_child_add ( adj_index_t  adj_index,
fib_node_type_t  type,
fib_node_index_t  child_index 
)

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 248 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void adj_child_remove ( adj_index_t  adj_index,
u32  sibling_index 
)

Remove a child dependent.

Definition at line 265 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* adj_cli_counters_set ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

CLI invoked function to enable/disable per-adj counters.

Definition at line 569 of file adj.c.

+ Here is the call graph for this function:

void adj_feature_update ( u32  sw_if_index,
u8  arc_index,
u8  is_enable 
)

Notify the adjacency subsystem that the features settings for an interface have changed.

Definition at line 316 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static adj_walk_rc_t adj_feature_update_walk_cb ( adj_index_t  ai,
void *  arg 
)
static

Definition at line 288 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

vnet_link_t adj_get_link_type ( adj_index_t  ai)

Return the link type of the adjacency.

Definition at line 355 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static fib_node_t* adj_get_node ( fib_node_index_t  index)
static

Definition at line 422 of file adj.c.

+ Here is the call graph for this function:

const u8* adj_get_rewrite ( adj_index_t  ai)

Return the rewrite string of the adjacency.

Return the link type of the adjacency.

Definition at line 408 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 adj_get_sw_if_index ( adj_index_t  ai)

Return the sw interface index of the adjacency.

Definition at line 368 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int adj_index_is_special ( adj_index_t  adj_index)
static

Definition at line 79 of file adj.c.

+ Here is the caller graph for this function:

int adj_is_up ( adj_index_t  ai)

Return true if the adjacency is 'UP', i.e.

can be used for forwarding 0 is down, !0 is up.

Definition at line 382 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void adj_last_lock_gone ( ip_adjacency_t adj)
static

Definition at line 158 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void adj_lock ( adj_index_t  adj_index)

Take a reference counting lock on the adjacency.

Definition at line 212 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* adj_module_init ( vlib_main_t vm)
static

Definition at line 462 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void adj_node_last_lock_gone ( fib_node_t node)
static

Definition at line 435 of file adj.c.

+ Here is the call graph for this function:

static void adj_poison ( ip_adjacency_t adj)
inlinestatic

Definition at line 39 of file adj.c.

+ Here is the caller graph for this function:

static clib_error_t* adj_show ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 477 of file adj.c.

+ Here is the call graph for this function:

void adj_unlock ( adj_index_t  adj_index)

Release a reference counting lock on the adjacency.

Definition at line 229 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void adj_walk ( u32  sw_if_index,
adj_walk_cb_t  cb,
void *  ctx 
)

Walk the Adjacencies on a given interface.

Definition at line 335 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 96 of file adj.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

vlib_cli_command_t adj_cli_counters_set_command
static
Initial value:
= {
.path = "adjacency counters",
.short_help = "adjacency counters [enable|disable]",
.function = adj_cli_counters_set,
}
static clib_error_t * adj_cli_counters_set(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
CLI invoked function to enable/disable per-adj counters.
Definition: adj.c:569

(constructor) VLIB_CLI_COMMAND (adj_cli_counters_set_command)

Definition at line 603 of file adj.c.

int adj_per_adj_counters

Global Config for enabling per-adjacency counters.

Global Config for enabling per-adjacency counters This is configurable because it comes with a non-negligible performance cost.

By default these are disabled.

Definition at line 36 of file adj.c.

ip_adjacency_t* adj_pool

The global adjacnecy pool.

Exposed for fast/inline data-plane access

Definition at line 30 of file adj.c.

vlib_cli_command_t adj_show_command
static
Initial value:
= {
.path = "show adj",
.short_help = "show adj [<adj_index>] [interface] [summary]",
.function = adj_show,
}
static clib_error_t * adj_show(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: adj.c:477

(constructor) VLIB_CLI_COMMAND (adj_show_command)

Definition at line 559 of file adj.c.

const fib_node_vft_t adj_vft
static
Initial value:
= {
.fnv_get = adj_get_node,
.fnv_last_lock = adj_node_last_lock_gone,
.fnv_back_walk = adj_back_walk_notify,
}
static fib_node_back_walk_rc_t adj_back_walk_notify(fib_node_t *node, fib_node_back_walk_ctx_t *ctx)
Definition: adj.c:441
static fib_node_t * adj_get_node(fib_node_index_t index)
Definition: adj.c:422
static void adj_node_last_lock_gone(fib_node_t *node)
Definition: adj.c:435

Definition at line 455 of file adj.c.

vlib_combined_counter_main_t adjacency_counters

Adjacency packet counters.

Definition at line 25 of file adj.c.