FD.io VPP  v21.06-3-gbb25fbf28
Vector Packet Processing
adj_nbr.c File Reference
+ Include dependency graph for adj_nbr.c:

Go to the source code of this file.

Data Structures

struct  adj_nbr_key_t_
 
struct  adj_nbr_interface_state_change_ctx_t_
 Context for the state change walk of the DB. More...
 

Macros

#define ADJ_NBR_SET_KEY(_key, _lt, _nh)
 
#define ADJ_NBR_ITF_OK(_proto, _itf)
 
#define ADJ_NBR_ASSERT_NH_PROTO(nh_proto, err)
 

Typedefs

typedef struct adj_nbr_key_t_ adj_nbr_key_t
 
typedef enum adj_nbr_interface_flags_t_ adj_nbr_interface_flags_t
 Flags associated with the interface state walks. More...
 
typedef struct adj_nbr_interface_state_change_ctx_t_ adj_nbr_interface_state_change_ctx_t
 Context for the state change walk of the DB. More...
 

Enumerations

enum  adj_nbr_interface_flags_t_ { ADJ_NBR_INTERFACE_UP = (1 << 0) }
 Flags associated with the interface state walks. More...
 

Functions

static void adj_nbr_insert (fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index, adj_index_t adj_index)
 
void adj_nbr_remove (adj_index_t ai, fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index)
 
adj_index_t adj_nbr_find (fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index)
 Lookup neighbor adjancency. More...
 
static u32 adj_get_nd_node (fib_protocol_t proto)
 
static void adj_nbr_evaluate_feature (adj_index_t ai)
 Check and set feature flags if o/p interface has any o/p features. More...
 
static ip_adjacency_tadj_nbr_alloc (fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index)
 
void adj_nbr_set_mtu (adj_index_t adj_index, u16 mtu)
 Set the MTU on an adjacency. More...
 
adj_index_t adj_nbr_add_or_lock (fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index)
 Neighbour Adjacency sub-type. More...
 
adj_index_t adj_nbr_add_or_lock_w_rewrite (fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index, u8 *rewrite)
 Add (and lock) a new or lock an existing neighbour adjacency. More...
 
void adj_nbr_update_rewrite (adj_index_t adj_index, adj_nbr_rewrite_flag_t flags, u8 *rewrite)
 adj_nbr_update_rewrite More...
 
void adj_nbr_update_rewrite_internal (ip_adjacency_t *adj, ip_lookup_next_t adj_next_index, u32 this_node, u32 next_node, u8 *rewrite)
 adj_nbr_update_rewrite_internal More...
 
u32 adj_nbr_db_size (void)
 Return the size of the adjacency database. More...
 
void adj_nbr_walk (u32 sw_if_index, fib_protocol_t adj_nh_proto, adj_walk_cb_t cb, void *ctx)
 Walk all adjacencies on a link for a given next-hop protocol. More...
 
void adj_nbr_walk_nh4 (u32 sw_if_index, const ip4_address_t *addr, adj_walk_cb_t cb, void *ctx)
 Walk adjacencies on a link with a given v4 next-hop. More...
 
void adj_nbr_walk_nh6 (u32 sw_if_index, const ip6_address_t *addr, adj_walk_cb_t cb, void *ctx)
 Walk adjacencies on a link with a given v6 next-hop. More...
 
void adj_nbr_walk_nh (u32 sw_if_index, fib_protocol_t adj_nh_proto, const ip46_address_t *nh, adj_walk_cb_t cb, void *ctx)
 Walk adjacencies on a link with a given next-hop. More...
 
static adj_walk_rc_t adj_nbr_interface_state_change_one (adj_index_t ai, void *arg)
 
static clib_error_tadj_nbr_sw_interface_state_change (vnet_main_t *vnm, u32 sw_if_index, u32 flags)
 Registered function for SW interface state changes. More...
 
 VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION_PRIO (adj_nbr_sw_interface_state_change, VNET_ITF_FUNC_PRIORITY_HIGH)
 
static walk_rc_t adj_nbr_hw_sw_interface_state_change (vnet_main_t *vnm, u32 sw_if_index, void *arg)
 Invoked on each SW interface of a HW interface when the HW interface state changes. More...
 
static clib_error_tadj_nbr_hw_interface_state_change (vnet_main_t *vnm, u32 hw_if_index, u32 flags)
 Registered callback for HW interface state changes. More...
 
 VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION_PRIO (adj_nbr_hw_interface_state_change, VNET_ITF_FUNC_PRIORITY_HIGH)
 
static adj_walk_rc_t adj_nbr_interface_delete_one (adj_index_t ai, void *arg)
 
static clib_error_tadj_nbr_interface_add_del (vnet_main_t *vnm, u32 sw_if_index, u32 is_add)
 adj_nbr_interface_add_del More...
 
 VNET_SW_INTERFACE_ADD_DEL_FUNCTION (adj_nbr_interface_add_del)
 
static adj_walk_rc_t adj_nbr_show_one (adj_index_t ai, void *arg)
 
static clib_error_tadj_nbr_show (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
u8format_adj_nbr_incomplete (u8 *s, va_list *ap)
 Format aa incomplete neigbour (ARP) adjacency. More...
 
u8format_adj_nbr (u8 *s, va_list *ap)
 Format a neigbour (REWRITE) adjacency. More...
 
static void adj_dpo_lock (dpo_id_t *dpo)
 
static void adj_dpo_unlock (dpo_id_t *dpo)
 
static void adj_mem_show (void)
 
void adj_nbr_module_init (void)
 Module initialisation. More...
 

Variables

static uword ** adj_nbr_tables [FIB_PROTOCOL_IP_MAX]
 
static vlib_cli_command_t ip4_show_fib_command
 (constructor) VLIB_CLI_COMMAND (ip4_show_fib_command) More...
 
const static dpo_vft_t adj_nbr_dpo_vft
 
const static dpo_vft_t adj_nbr_incompl_dpo_vft
 
const static char *const nbr_ip4_nodes []
 The per-protocol VLIB graph nodes that are assigned to an adjacency object. More...
 
const static char *const nbr_ip6_nodes []
 
const static char *const nbr_mpls_nodes []
 
const static char *const nbr_ethernet_nodes []
 
const static char *const *const nbr_nodes [DPO_PROTO_NUM]
 
const static char *const nbr_incomplete_ip4_nodes []
 
const static char *const nbr_incomplete_ip6_nodes []
 
const static char *const nbr_incomplete_mpls_nodes []
 
const static char *const *const nbr_incomplete_nodes [DPO_PROTO_NUM]
 

Macro Definition Documentation

◆ ADJ_NBR_ASSERT_NH_PROTO

#define ADJ_NBR_ASSERT_NH_PROTO (   nh_proto,
  err 
)
Value:
do { \
ASSERT (nh_proto < FIB_PROTOCOL_IP_MAX); \
const fib_protocol_t nh_proto__ = (nh_proto); \
if (nh_proto__ >= FIB_PROTOCOL_IP_MAX) \
{ \
clib_warning ("BUG: protocol %d > %d\n", \
(int)nh_proto__, \
return err; \
} \
} while (0)

Definition at line 44 of file adj_nbr.c.

◆ ADJ_NBR_ITF_OK

#define ADJ_NBR_ITF_OK (   _proto,
  _itf 
)
Value:
(((_itf) < vec_len(adj_nbr_tables[_proto])) && \
(NULL != adj_nbr_tables[_proto][(_itf)]))

Definition at line 40 of file adj_nbr.c.

◆ ADJ_NBR_SET_KEY

#define ADJ_NBR_SET_KEY (   _key,
  _lt,
  _nh 
)
Value:
{ \
ip46_address_copy(&(_key).ank_ip, (_nh)); \
_key.ank_linkt = (_lt); \
}

Definition at line 34 of file adj_nbr.c.

Typedef Documentation

◆ adj_nbr_interface_flags_t

Flags associated with the interface state walks.

◆ adj_nbr_interface_state_change_ctx_t

Context for the state change walk of the DB.

◆ adj_nbr_key_t

typedef struct adj_nbr_key_t_ adj_nbr_key_t

Enumeration Type Documentation

◆ adj_nbr_interface_flags_t_

Flags associated with the interface state walks.

Enumerator
ADJ_NBR_INTERFACE_UP 

Definition at line 712 of file adj_nbr.c.

Function Documentation

◆ adj_dpo_lock()

static void adj_dpo_lock ( dpo_id_t dpo)
static

Definition at line 1057 of file adj_nbr.c.

+ Here is the call graph for this function:

◆ adj_dpo_unlock()

static void adj_dpo_unlock ( dpo_id_t dpo)
static

Definition at line 1062 of file adj_nbr.c.

+ Here is the call graph for this function:

◆ adj_get_nd_node()

static u32 adj_get_nd_node ( fib_protocol_t  proto)
inlinestatic

Definition at line 134 of file adj_nbr.c.

+ Here is the caller graph for this function:

◆ adj_mem_show()

static void adj_mem_show ( void  )
static

Definition at line 1068 of file adj_nbr.c.

+ Here is the call graph for this function:

◆ adj_nbr_add_or_lock()

adj_index_t adj_nbr_add_or_lock ( fib_protocol_t  nh_proto,
vnet_link_t  link_type,
const ip46_address_t *  nh_addr,
u32  sw_if_index 
)

Neighbour Adjacency sub-type.

These adjs represent an L3 peer on a connected link.

Add (and lock) a new or lock an existing neighbour adjacency

Parameters
nh_protoThe protocol for the next-hop address (v4 or v6)
link_typeA description of the protocol of the packets that will forward through this adj. On an ethernet interface this is the MAC header's ether-type
nh_addrThe address of the next-hop/peer to send the packet to
sw_if_indexThe interface on which the peer resides

Definition at line 257 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_add_or_lock_w_rewrite()

adj_index_t adj_nbr_add_or_lock_w_rewrite ( fib_protocol_t  nh_proto,
vnet_link_t  link_type,
const ip46_address_t *  nh_addr,
u32  sw_if_index,
u8 rewrite 
)

Add (and lock) a new or lock an existing neighbour adjacency.

Parameters
nh_protoThe protocol for the next-hop address (v4 or v6)
link_typeA description of the protocol of the packets that will forward through this adj. On an ethernet interface this is the MAC header's ether-type
nh_addrThe address of the next-hop/peer to send the packet to
sw_if_indexThe interface on which the peer resides
rewriteThe rewrite to prepend to packets

Definition at line 303 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_alloc()

static ip_adjacency_t* adj_nbr_alloc ( fib_protocol_t  nh_proto,
vnet_link_t  link_type,
const ip46_address_t *  nh_addr,
u32  sw_if_index 
)
static

Definition at line 196 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_db_size()

u32 adj_nbr_db_size ( void  )

Return the size of the adjacency database.

for testing purposes

Definition at line 569 of file adj_nbr.c.

+ Here is the call graph for this function:

◆ adj_nbr_evaluate_feature()

static void adj_nbr_evaluate_feature ( adj_index_t  ai)
static

Check and set feature flags if o/p interface has any o/p features.

Definition at line 152 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_find()

adj_index_t adj_nbr_find ( fib_protocol_t  nh_proto,
vnet_link_t  link_type,
const ip46_address_t *  nh_addr,
u32  sw_if_index 
)

Lookup neighbor adjancency.

Definition at line 109 of file adj_nbr.c.

+ Here is the caller graph for this function:

◆ adj_nbr_hw_interface_state_change()

static clib_error_t* adj_nbr_hw_interface_state_change ( vnet_main_t vnm,
u32  hw_if_index,
u32  flags 
)
static

Registered callback for HW interface state changes.

Definition at line 826 of file adj_nbr.c.

+ Here is the call graph for this function:

◆ adj_nbr_hw_sw_interface_state_change()

static walk_rc_t adj_nbr_hw_sw_interface_state_change ( vnet_main_t vnm,
u32  sw_if_index,
void *  arg 
)
static

Invoked on each SW interface of a HW interface when the HW interface state changes.

Definition at line 803 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_insert()

static void adj_nbr_insert ( fib_protocol_t  nh_proto,
vnet_link_t  link_type,
const ip46_address_t *  nh_addr,
u32  sw_if_index,
adj_index_t  adj_index 
)
static

Definition at line 58 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_interface_add_del()

static clib_error_t* adj_nbr_interface_add_del ( vnet_main_t vnm,
u32  sw_if_index,
u32  is_add 
)
static

adj_nbr_interface_add_del

Registered to receive interface Add and delete notifications

Definition at line 881 of file adj_nbr.c.

+ Here is the call graph for this function:

◆ adj_nbr_interface_delete_one()

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

Definition at line 851 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_interface_state_change_one()

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

Definition at line 729 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_module_init()

void adj_nbr_module_init ( void  )

Module initialisation.

Definition at line 1151 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_remove()

void adj_nbr_remove ( adj_index_t  ai,
fib_protocol_t  nh_proto,
vnet_link_t  link_type,
const ip46_address_t *  nh_addr,
u32  sw_if_index 
)

Definition at line 85 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_set_mtu()

void adj_nbr_set_mtu ( adj_index_t  ai,
u16  mtu 
)

Set the MTU on an adjacency.

Definition at line 226 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_show()

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

Definition at line 932 of file adj_nbr.c.

+ Here is the call graph for this function:

◆ adj_nbr_show_one()

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

Definition at line 920 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_sw_interface_state_change()

static clib_error_t* adj_nbr_sw_interface_state_change ( vnet_main_t vnm,
u32  sw_if_index,
u32  flags 
)
static

Registered function for SW interface state changes.

Definition at line 769 of file adj_nbr.c.

+ Here is the call graph for this function:

◆ adj_nbr_update_rewrite()

void adj_nbr_update_rewrite ( adj_index_t  adj_index,
adj_nbr_rewrite_flag_t  flags,
u8 rewrite 
)

adj_nbr_update_rewrite

Update the rewrite string for an existing adjacecny.

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 340 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_update_rewrite_internal()

void adj_nbr_update_rewrite_internal ( ip_adjacency_t adj,
ip_lookup_next_t  adj_next_index,
u32  this_node,
u32  next_node,
u8 rewrite 
)

adj_nbr_update_rewrite_internal

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 382 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_walk()

void adj_nbr_walk ( u32  sw_if_index,
fib_protocol_t  adj_nh_proto,
adj_walk_cb_t  cb,
void *  ctx 
)

Walk all adjacencies on a link for a given next-hop protocol.

Walk the neighbour Adjacencies on a given interface.

Definition at line 592 of file adj_nbr.c.

+ Here is the caller graph for this function:

◆ adj_nbr_walk_nh()

void adj_nbr_walk_nh ( u32  sw_if_index,
fib_protocol_t  adj_nh_proto,
const ip46_address_t *  nh,
adj_walk_cb_t  cb,
void *  ctx 
)

Walk adjacencies on a link with a given next-hop.

Walk the neighbour Adjacencies on a given interface with a given next-hop.

that is visit the adjacencies with different link types.

Definition at line 684 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_walk_nh4()

void adj_nbr_walk_nh4 ( u32  sw_if_index,
const ip4_address_t addr,
adj_walk_cb_t  cb,
void *  ctx 
)

Walk adjacencies on a link with a given v4 next-hop.

that is visit the adjacencies with different link types.

Definition at line 628 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ adj_nbr_walk_nh6()

void adj_nbr_walk_nh6 ( u32  sw_if_index,
const ip6_address_t *  addr,
adj_walk_cb_t  cb,
void *  ctx 
)

Walk adjacencies on a link with a given v6 next-hop.

that is visit the adjacencies with different link types.

Definition at line 656 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ format_adj_nbr()

u8* format_adj_nbr ( u8 s,
va_list *  ap 
)

Format a neigbour (REWRITE) adjacency.

Definition at line 1039 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ format_adj_nbr_incomplete()

u8* format_adj_nbr_incomplete ( u8 s,
va_list *  ap 
)

Format aa incomplete neigbour (ARP) adjacency.

Definition at line 1020 of file adj_nbr.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION_PRIO()

VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION_PRIO ( adj_nbr_hw_interface_state_change  ,
VNET_ITF_FUNC_PRIORITY_HIGH   
)

◆ VNET_SW_INTERFACE_ADD_DEL_FUNCTION()

VNET_SW_INTERFACE_ADD_DEL_FUNCTION ( adj_nbr_interface_add_del  )

◆ VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION_PRIO()

VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION_PRIO ( adj_nbr_sw_interface_state_change  ,
VNET_ITF_FUNC_PRIORITY_HIGH   
)

Variable Documentation

◆ adj_nbr_dpo_vft

const static dpo_vft_t adj_nbr_dpo_vft
static
Initial value:
= {
.dv_lock = adj_dpo_lock,
.dv_unlock = adj_dpo_unlock,
.dv_format = format_adj_nbr,
.dv_mem_show = adj_mem_show,
.dv_get_urpf = adj_dpo_get_urpf,
.dv_get_mtu = adj_dpo_get_mtu,
}

Definition at line 1076 of file adj_nbr.c.

◆ adj_nbr_incompl_dpo_vft

const static dpo_vft_t adj_nbr_incompl_dpo_vft
static
Initial value:
= {
.dv_lock = adj_dpo_lock,
.dv_unlock = adj_dpo_unlock,
.dv_get_urpf = adj_dpo_get_urpf,
.dv_get_mtu = adj_dpo_get_mtu,
}

Definition at line 1084 of file adj_nbr.c.

◆ adj_nbr_tables

uword** adj_nbr_tables[FIB_PROTOCOL_IP_MAX]
static

Definition at line 26 of file adj_nbr.c.

◆ ip4_show_fib_command

vlib_cli_command_t ip4_show_fib_command
static
Initial value:
= {
.path = "show adj nbr",
.short_help = "show adj nbr [<adj_index>] [interface]",
.function = adj_nbr_show,
}

(constructor) VLIB_CLI_COMMAND (ip4_show_fib_command)

Definition at line 1013 of file adj_nbr.c.

◆ nbr_ethernet_nodes

const static char* const nbr_ethernet_nodes[]
static
Initial value:
=
{
"adj-l2-rewrite",
NULL,
}

Definition at line 1114 of file adj_nbr.c.

◆ nbr_incomplete_ip4_nodes

const static char* const nbr_incomplete_ip4_nodes[]
static
Initial value:
=
{
"ip4-arp",
NULL,
}

Definition at line 1127 of file adj_nbr.c.

◆ nbr_incomplete_ip6_nodes

const static char* const nbr_incomplete_ip6_nodes[]
static
Initial value:
=
{
"ip6-discover-neighbor",
NULL,
}

Definition at line 1132 of file adj_nbr.c.

◆ nbr_incomplete_mpls_nodes

const static char* const nbr_incomplete_mpls_nodes[]
static
Initial value:
=
{
"mpls-adj-incomplete",
NULL,
}

Definition at line 1137 of file adj_nbr.c.

◆ nbr_incomplete_nodes

const static char* const * const nbr_incomplete_nodes[DPO_PROTO_NUM]
static

◆ nbr_ip4_nodes

const static char* const nbr_ip4_nodes[]
static
Initial value:
=
{
"ip4-rewrite",
NULL,
}

The per-protocol VLIB graph nodes that are assigned to an adjacency object.

this means that these graph nodes are ones from which a nbr is the parent object in the DPO-graph.

Definition at line 1099 of file adj_nbr.c.

◆ nbr_ip6_nodes

const static char* const nbr_ip6_nodes[]
static
Initial value:
=
{
"ip6-rewrite",
NULL,
}

Definition at line 1104 of file adj_nbr.c.

◆ nbr_mpls_nodes

const static char* const nbr_mpls_nodes[]
static
Initial value:
=
{
"mpls-output",
NULL,
}

Definition at line 1109 of file adj_nbr.c.

◆ nbr_nodes

const static char* const * const nbr_nodes[DPO_PROTO_NUM]
static
adj_dpo_get_urpf
u32 adj_dpo_get_urpf(const dpo_id_t *dpo)
Definition: adj.c:321
adj_dpo_get_mtu
u16 adj_dpo_get_mtu(const dpo_id_t *dpo)
Definition: adj.c:331
adj_nbr_tables
static uword ** adj_nbr_tables[FIB_PROTOCOL_IP_MAX]
Definition: adj_nbr.c:26
format_adj_nbr_incomplete
u8 * format_adj_nbr_incomplete(u8 *s, va_list *ap)
Format aa incomplete neigbour (ARP) adjacency.
Definition: adj_nbr.c:1020
nbr_incomplete_ip6_nodes
const static char *const nbr_incomplete_ip6_nodes[]
Definition: adj_nbr.c:1132
vec_len
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
Definition: vec_bootstrap.h:142
nbr_incomplete_ip4_nodes
const static char *const nbr_incomplete_ip4_nodes[]
Definition: adj_nbr.c:1127
FIB_PROTOCOL_IP_MAX
#define FIB_PROTOCOL_IP_MAX
Definition outside of enum so it does not need to be included in non-defaulted switch statements.
Definition: fib_types.h:57
adj_mem_show
static void adj_mem_show(void)
Definition: adj_nbr.c:1068
adj_nbr_show
static clib_error_t * adj_nbr_show(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: adj_nbr.c:932
fib_protocol_t
enum fib_protocol_t_ fib_protocol_t
Protocol Type.
adj_dpo_lock
static void adj_dpo_lock(dpo_id_t *dpo)
Definition: adj_nbr.c:1057
DPO_PROTO_IP6
@ DPO_PROTO_IP6
Definition: dpo.h:65
DPO_PROTO_MPLS
@ DPO_PROTO_MPLS
Definition: dpo.h:66
adj_dpo_unlock
static void adj_dpo_unlock(dpo_id_t *dpo)
Definition: adj_nbr.c:1062
nbr_incomplete_mpls_nodes
const static char *const nbr_incomplete_mpls_nodes[]
Definition: adj_nbr.c:1137
nbr_ip6_nodes
const static char *const nbr_ip6_nodes[]
Definition: adj_nbr.c:1104
nbr_ip4_nodes
const static char *const nbr_ip4_nodes[]
The per-protocol VLIB graph nodes that are assigned to an adjacency object.
Definition: adj_nbr.c:1099
nbr_mpls_nodes
const static char *const nbr_mpls_nodes[]
Definition: adj_nbr.c:1109
nbr_ethernet_nodes
const static char *const nbr_ethernet_nodes[]
Definition: adj_nbr.c:1114
DPO_PROTO_IP4
@ DPO_PROTO_IP4
Definition: dpo.h:64
DPO_PROTO_ETHERNET
@ DPO_PROTO_ETHERNET
Definition: dpo.h:67
format_adj_nbr
u8 * format_adj_nbr(u8 *s, va_list *ap)
Format a neigbour (REWRITE) adjacency.
Definition: adj_nbr.c:1039