FD.io VPP  v21.06
Vector Packet Processing
ip6_neighbor.c File Reference
+ Include dependency graph for ip6_neighbor.c:

Go to the source code of this file.

Macros

#define log_debug(fmt, ...)   vlib_log_debug (ip6_neighbor_log.class, fmt, __VA_ARGS__)
 

Enumerations

enum  ip6_discover_neighbor_next_t { IP6_NBR_NEXT_DROP, IP6_NBR_NEXT_REPLY_TX, IP6_NBR_N_NEXT }
 
enum  ip6_discover_neighbor_error_t { IP6_NBR_ERROR_DROP, IP6_NBR_ERROR_REQUEST_SENT, IP6_NBR_ERROR_NO_SOURCE_ADDRESS, IP6_NBR_ERROR_NO_BUFFERS }
 

Functions

 VLIB_REGISTER_LOG_CLASS (ip6_neighbor_log, static)
 
void ip6_neighbor_probe_dst (u32 sw_if_index, const ip6_address_t *dst)
 
void ip6_neighbor_advertise (vlib_main_t *vm, vnet_main_t *vnm, u32 sw_if_index, const ip6_address_t *addr)
 
static uword ip6_discover_neighbor_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, int is_glean)
 
static uword ip6_discover_neighbor (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_glean (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static clib_error_tip6_neighbor_init (vlib_main_t *vm)
 
static clib_error_tip6_nd_main_loop_enter (vlib_main_t *vm)
 

Variables

static throttle_t nd_throttle
 ND throttling. More...
 
static char * ip6_discover_neighbor_error_strings []
 
vlib_node_registration_t ip6_glean_node
 (constructor) VLIB_REGISTER_NODE (ip6_glean_node) More...
 
vlib_node_registration_t ip6_discover_neighbor_node
 (constructor) VLIB_REGISTER_NODE (ip6_discover_neighbor_node) More...
 
vlib_packet_template_t ip6_neighbor_packet_template
 

Macro Definition Documentation

◆ log_debug

#define log_debug (   fmt,
  ... 
)    vlib_log_debug (ip6_neighbor_log.class, fmt, __VA_ARGS__)

Definition at line 30 of file ip6_neighbor.c.

Enumeration Type Documentation

◆ ip6_discover_neighbor_error_t

Enumerator
IP6_NBR_ERROR_DROP 
IP6_NBR_ERROR_REQUEST_SENT 
IP6_NBR_ERROR_NO_SOURCE_ADDRESS 
IP6_NBR_ERROR_NO_BUFFERS 

Definition at line 116 of file ip6_neighbor.c.

◆ ip6_discover_neighbor_next_t

Enumerator
IP6_NBR_NEXT_DROP 
IP6_NBR_NEXT_REPLY_TX 
IP6_NBR_N_NEXT 

Definition at line 109 of file ip6_neighbor.c.

Function Documentation

◆ ip6_discover_neighbor()

static uword ip6_discover_neighbor ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 248 of file ip6_neighbor.c.

+ Here is the call graph for this function:

◆ ip6_discover_neighbor_inline()

static uword ip6_discover_neighbor_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
int  is_glean 
)
static

Definition at line 125 of file ip6_neighbor.c.

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

◆ ip6_glean()

static uword ip6_glean ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 255 of file ip6_neighbor.c.

+ Here is the call graph for this function:

◆ ip6_nd_main_loop_enter()

static clib_error_t* ip6_nd_main_loop_enter ( vlib_main_t vm)
static

Definition at line 338 of file ip6_neighbor.c.

+ Here is the call graph for this function:

◆ ip6_neighbor_advertise()

void ip6_neighbor_advertise ( vlib_main_t vm,
vnet_main_t vnm,
u32  sw_if_index,
const ip6_address_t *  addr 
)

Definition at line 43 of file ip6_neighbor.c.

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

◆ ip6_neighbor_init()

static clib_error_t* ip6_neighbor_init ( vlib_main_t vm)
static

Definition at line 304 of file ip6_neighbor.c.

+ Here is the call graph for this function:

◆ ip6_neighbor_probe_dst()

void ip6_neighbor_probe_dst ( u32  sw_if_index,
const ip6_address_t *  dst 
)

Definition at line 33 of file ip6_neighbor.c.

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

◆ VLIB_REGISTER_LOG_CLASS()

VLIB_REGISTER_LOG_CLASS ( ip6_neighbor_log  ,
static   
)

Variable Documentation

◆ ip6_discover_neighbor_error_strings

char* ip6_discover_neighbor_error_strings[]
static
Initial value:
= {
[IP6_NBR_ERROR_DROP] = "address overflow drops",
[IP6_NBR_ERROR_REQUEST_SENT] = "neighbor solicitations sent",
[IP6_NBR_ERROR_NO_SOURCE_ADDRESS] = "no source address for ND solicitation",
[IP6_NBR_ERROR_NO_BUFFERS] = "no buffers",
}

Definition at line 260 of file ip6_neighbor.c.

◆ ip6_discover_neighbor_node

vlib_node_registration_t ip6_discover_neighbor_node
Initial value:
=
{
.function = ip6_discover_neighbor,
.name = "ip6-discover-neighbor",
.vector_size = sizeof (u32),
.n_next_nodes = IP6_NBR_N_NEXT,
.next_nodes =
{
[IP6_NBR_NEXT_DROP] = "ip6-drop",
[IP6_NBR_NEXT_REPLY_TX] = "ip6-rewrite-mcast",
},
}
unsigned int u32
Definition: types.h:88
static char * ip6_discover_neighbor_error_strings[]
Definition: ip6_neighbor.c:260
static uword ip6_discover_neighbor(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_neighbor.c:248
#define ARRAY_LEN(x)
Definition: clib.h:70
u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:951

(constructor) VLIB_REGISTER_NODE (ip6_discover_neighbor_node)

Definition at line 283 of file ip6_neighbor.c.

◆ ip6_glean_node

vlib_node_registration_t ip6_glean_node
Initial value:
=
{
.function = ip6_glean,
.name = "ip6-glean",
.vector_size = sizeof (u32),
.n_next_nodes = IP6_NBR_N_NEXT,
.next_nodes =
{
[IP6_NBR_NEXT_DROP] = "ip6-drop",
[IP6_NBR_NEXT_REPLY_TX] = "ip6-rewrite-mcast",
},
}
unsigned int u32
Definition: types.h:88
static uword ip6_glean(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_neighbor.c:255
static char * ip6_discover_neighbor_error_strings[]
Definition: ip6_neighbor.c:260
#define ARRAY_LEN(x)
Definition: clib.h:70
u8 * format_ip6_forward_next_trace(u8 *s, va_list *args)
Definition: ip6_forward.c:951

(constructor) VLIB_REGISTER_NODE (ip6_glean_node)

Definition at line 268 of file ip6_neighbor.c.

◆ ip6_neighbor_packet_template

vlib_packet_template_t ip6_neighbor_packet_template

Definition at line 301 of file ip6_neighbor.c.

◆ nd_throttle

throttle_t nd_throttle
static

ND throttling.

Definition at line 23 of file ip6_neighbor.c.