FD.io VPP  v16.12-rc0-308-g931be3a
Vector Packet Processing
ip6_neighbor.c File Reference

IPv6 Neighbor Adjacency and Neighbor Discovery. More...

+ Include dependency graph for ip6_neighbor.c:

Go to the source code of this file.

Data Structures

struct  ip6_neighbor_key_t
 
struct  ip6_neighbor_t
 
struct  ip6_radv_prefix_t
 
struct  ip6_mldp_group_t
 
struct  ip6_radv_t
 
struct  pending_resolution_t
 
struct  ip6_neighbor_main_t
 
struct  ip6_neighbor_set_unset_rpc_args_t
 

Macros

#define ETHER_MAC_ADDR_LEN   6
 
#define IP6_NEIGHBOR_FLAG_STATIC   (1 << 0)
 
#define IP6_NEIGHBOR_FLAG_DYNAMIC   (2 << 0)
 
#define MIN_ADV_VALID_LIFETIME   7203 /* seconds */
 
#define DEF_ADV_VALID_LIFETIME   2592000
 
#define DEF_ADV_PREF_LIFETIME   604800
 
#define DEF_MAX_RADV_INTERVAL   200
 
#define DEF_MIN_RADV_INTERVAL   .75 * DEF_MAX_RADV_INTERVAL
 
#define DEF_CURR_HOP_LIMIT   64
 
#define DEF_DEF_RTR_LIFETIME   3 * DEF_MAX_RADV_INTERVAL
 
#define MAX_DEF_RTR_LIFETIME   9000
 
#define MAX_INITIAL_RTR_ADVERT_INTERVAL   16 /* seconds */
 
#define MAX_INITIAL_RTR_ADVERTISEMENTS   3 /*transmissions */
 
#define MIN_DELAY_BETWEEN_RAS   3 /* seconds */
 
#define MAX_DELAY_BETWEEN_RAS   1800 /* seconds */
 
#define MAX_RA_DELAY_TIME   .5 /* seconds */
 
#define IP6_NBR_MK_KEY(k, sw_if_index, addr)
 
#define foreach_log_level
 

Enumerations

enum  icmp6_neighbor_solicitation_or_advertisement_next_t { ICMP6_NEIGHBOR_SOLICITATION_NEXT_DROP, ICMP6_NEIGHBOR_SOLICITATION_NEXT_REPLY, ICMP6_NEIGHBOR_SOLICITATION_N_NEXT }
 
enum  log_level_t { foreach_log_level }
 
enum  icmp6_router_solicitation_or_advertisement_next_t { ICMP6_ROUTER_SOLICITATION_NEXT_DROP, ICMP6_ROUTER_SOLICITATION_NEXT_REPLY_RW, ICMP6_ROUTER_SOLICITATION_NEXT_REPLY_TX, ICMP6_ROUTER_SOLICITATION_N_NEXT }
 

Functions

static u8format_ip6_neighbor_ip6_entry (u8 *s, va_list *va)
 
static clib_error_tip6_neighbor_sw_interface_up_down (vnet_main_t *vnm, u32 sw_if_index, u32 flags)
 
 VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION (ip6_neighbor_sw_interface_up_down)
 
static void unset_random_neighbor_entry (void)
 
static void ip6_neighbor_set_unset_rpc_callback (ip6_neighbor_set_unset_rpc_args_t *a)
 
static void set_unset_ip6_neighbor_rpc (vlib_main_t *vm, u32 sw_if_index, ip6_address_t *a, u8 *link_layer_addreess, int is_add, int is_static)
 
static void ip6_nbr_probe (ip_adjacency_t *adj)
 
static void ip6_nd_mk_complete (adj_index_t ai, ip6_neighbor_t *nbr)
 
static void ip6_nd_mk_incomplete (adj_index_t ai, ip6_neighbor_t *nbr)
 
static ip6_neighbor_tip6_nd_find (u32 sw_if_index, const ip6_address_t *addr)
 
static adj_walk_rc_t ip6_nd_mk_complete_walk (adj_index_t ai, void *ctx)
 
static adj_walk_rc_t ip6_nd_mk_incomplete_walk (adj_index_t ai, void *ctx)
 
void ip6_ethernet_update_adjacency (vnet_main_t *vnm, u32 sw_if_index, u32 ai)
 
int vnet_set_ip6_ethernet_neighbor (vlib_main_t *vm, u32 sw_if_index, ip6_address_t *a, u8 *link_layer_address, uword n_bytes_link_layer_address, int is_static)
 
int vnet_unset_ip6_ethernet_neighbor (vlib_main_t *vm, u32 sw_if_index, ip6_address_t *a, u8 *link_layer_address, uword n_bytes_link_layer_address)
 
static int ip6_neighbor_sort (void *a1, void *a2)
 
static clib_error_tshow_ip6_neighbors (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tset_ip6_neighbor (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static_always_inline uword icmp6_neighbor_solicitation_or_advertisement (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, uword is_solicitation)
 
static void ip6_neighbor_syslog (vlib_main_t *vm, int priority, char *fmt,...)
 
static_always_inline uword icmp6_router_solicitation (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static_always_inline uword icmp6_router_advertisement (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static u32 ip6_neighbor_sw_interface_add_del (vnet_main_t *vnm, u32 sw_if_index, u32 is_add)
 
static void ip6_neighbor_send_mldpv2_report (u32 sw_if_index)
 
static uword ip6_neighbor_process_timer_event (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_icmp_neighbor_discovery_event_process (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword icmp6_neighbor_solicitation (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword icmp6_neighbor_advertisement (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
int ip6_neighbor_ra_config (vlib_main_t *vm, u32 sw_if_index, u8 suppress, u8 managed, u8 other, u8 ll_option, u8 send_unicast, u8 cease, u8 use_lifetime, u32 lifetime, u32 initial_count, u32 initial_interval, u32 max_interval, u32 min_interval, u8 is_no)
 
int ip6_neighbor_ra_prefix (vlib_main_t *vm, u32 sw_if_index, ip6_address_t *prefix_addr, u8 prefix_len, u8 use_default, u32 val_lifetime, u32 pref_lifetime, u8 no_advertise, u8 off_link, u8 no_autoconfig, u8 no_onlink, u8 is_no)
 
clib_error_tip6_neighbor_cmd (vlib_main_t *vm, unformat_input_t *main_input, vlib_cli_command_t *cmd)
 
static void ip6_print_addrs (vlib_main_t *vm, u32 *addrs)
 
static clib_error_tshow_ip6_interface_cmd (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
clib_error_tdisable_ip6_interface (vlib_main_t *vm, u32 sw_if_index)
 
int ip6_interface_enabled (vlib_main_t *vm, u32 sw_if_index)
 
clib_error_tenable_ip6_interface (vlib_main_t *vm, u32 sw_if_index)
 
static clib_error_tenable_ip6_interface_cmd (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_tdisable_ip6_interface_cmd (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
clib_error_tset_ip6_link_local_address (vlib_main_t *vm, u32 sw_if_index, ip6_address_t *address, u8 address_length)
 
clib_error_tset_ip6_link_local_address_cmd (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static void ip6_neighbor_add_del_interface_address (ip6_main_t *im, uword opaque, u32 sw_if_index, ip6_address_t *address, u32 address_length, u32 if_address_index, u32 is_delete)
 
clib_error_tip6_set_neighbor_limit (u32 neighbor_limit)
 
static clib_error_tip6_neighbor_init (vlib_main_t *vm)
 
void vnet_register_ip6_neighbor_resolution_event (vnet_main_t *vnm, void *address_arg, uword node_index, uword type_opaque, uword data)
 
int vnet_add_del_ip6_nd_change_event (vnet_main_t *vnm, void *data_callback, u32 pid, void *address_arg, uword node_index, uword type_opaque, uword data, int is_add)
 
int vnet_ip6_nd_term (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_buffer_t *p0, ethernet_header_t *eth, ip6_header_t *ip, u32 sw_if_index, u16 bd_index, u8 shg)
 
void ethernet_ndp_change_mac (vlib_main_t *vm, u32 sw_if_index)
 

Variables

static ip6_neighbor_main_t ip6_neighbor_main
 
static ip6_address_t ip6a_zero
 
static vlib_cli_command_t show_ip6_neighbors_command
 (constructor) VLIB_CLI_COMMAND (show_ip6_neighbors_command) More...
 
static vlib_cli_command_t set_ip6_neighbor_command
 (constructor) VLIB_CLI_COMMAND (set_ip6_neighbor_command) More...
 
static char * log_level_strings []
 
static int logmask = 1 << LOG_DEBUG
 
static vlib_node_registration_t ip6_icmp_router_solicitation_node
 (constructor) VLIB_REGISTER_NODE (ip6_icmp_router_solicitation_node) More...
 
static vlib_node_registration_t ip6_icmp_router_advertisement_node
 (constructor) VLIB_REGISTER_NODE (ip6_icmp_router_advertisement_node) More...
 
vlib_node_registration_t ip6_icmp_neighbor_discovery_event_node
 
static vlib_node_registration_t ip6_icmp_neighbor_solicitation_node
 (constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_solicitation_node) More...
 
static vlib_node_registration_t ip6_icmp_neighbor_advertisement_node
 (constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_advertisement_node) More...
 
static vlib_cli_command_t show_ip6_interface_command
 (constructor) VLIB_CLI_COMMAND (show_ip6_interface_command) More...
 
static vlib_cli_command_t enable_ip6_interface_command
 (constructor) VLIB_CLI_COMMAND (enable_ip6_interface_command) More...
 
static vlib_cli_command_t disable_ip6_interface_command
 (constructor) VLIB_CLI_COMMAND (disable_ip6_interface_command) More...
 
static vlib_cli_command_t ip6_nd_command
 (constructor) VLIB_CLI_COMMAND (ip6_nd_command) More...
 
static vlib_cli_command_t set_ip6_link_local_address_command
 (constructor) VLIB_CLI_COMMAND (set_ip6_link_local_address_command) More...
 

Detailed Description

IPv6 Neighbor Adjacency and Neighbor Discovery.

The files contains the API and CLI code for managing IPv6 neighbor adjacency tables and neighbor discovery logic.

Definition in file ip6_neighbor.c.

Macro Definition Documentation

#define DEF_ADV_PREF_LIFETIME   604800

Definition at line 78 of file ip6_neighbor.c.

#define DEF_ADV_VALID_LIFETIME   2592000

Definition at line 77 of file ip6_neighbor.c.

#define DEF_CURR_HOP_LIMIT   64

Definition at line 142 of file ip6_neighbor.c.

#define DEF_DEF_RTR_LIFETIME   3 * DEF_MAX_RADV_INTERVAL

Definition at line 143 of file ip6_neighbor.c.

#define DEF_MAX_RADV_INTERVAL   200

Definition at line 140 of file ip6_neighbor.c.

#define DEF_MIN_RADV_INTERVAL   .75 * DEF_MAX_RADV_INTERVAL

Definition at line 141 of file ip6_neighbor.c.

#define ETHER_MAC_ADDR_LEN   6

Definition at line 45 of file ip6_neighbor.c.

#define foreach_log_level
Value:
_ (DEBUG, "DEBUG") \
_ (INFO, "INFORMATION") \
_ (NOTICE, "NOTICE") \
_ (WARNING, "WARNING") \
_ (ERR, "ERROR") \
_ (CRIT, "CRITICAL") \
_ (ALERT, "ALERT") \
_ (EMERG, "EMERGENCY")

Definition at line 1094 of file ip6_neighbor.c.

#define IP6_NBR_MK_KEY (   k,
  sw_if_index,
  addr 
)
Value:
{ \
k.sw_if_index = sw_if_index; \
k.ip6_address = *addr; \
k.pad = 0; \
}
vhost_vring_addr_t addr
Definition: vhost-user.h:81

Definition at line 437 of file ip6_neighbor.c.

#define IP6_NEIGHBOR_FLAG_DYNAMIC   (2 << 0)

Definition at line 52 of file ip6_neighbor.c.

#define IP6_NEIGHBOR_FLAG_STATIC   (1 << 0)

Definition at line 51 of file ip6_neighbor.c.

#define MAX_DEF_RTR_LIFETIME   9000

Definition at line 144 of file ip6_neighbor.c.

#define MAX_DELAY_BETWEEN_RAS   1800 /* seconds */

Definition at line 149 of file ip6_neighbor.c.

#define MAX_INITIAL_RTR_ADVERT_INTERVAL   16 /* seconds */

Definition at line 146 of file ip6_neighbor.c.

#define MAX_INITIAL_RTR_ADVERTISEMENTS   3 /*transmissions */

Definition at line 147 of file ip6_neighbor.c.

#define MAX_RA_DELAY_TIME   .5 /* seconds */

Definition at line 150 of file ip6_neighbor.c.

#define MIN_ADV_VALID_LIFETIME   7203 /* seconds */

Definition at line 76 of file ip6_neighbor.c.

#define MIN_DELAY_BETWEEN_RAS   3 /* seconds */

Definition at line 148 of file ip6_neighbor.c.

Enumeration Type Documentation

Enumerator
ICMP6_NEIGHBOR_SOLICITATION_NEXT_DROP 
ICMP6_NEIGHBOR_SOLICITATION_NEXT_REPLY 
ICMP6_NEIGHBOR_SOLICITATION_N_NEXT 

Definition at line 874 of file ip6_neighbor.c.

Enumerator
ICMP6_ROUTER_SOLICITATION_NEXT_DROP 
ICMP6_ROUTER_SOLICITATION_NEXT_REPLY_RW 
ICMP6_ROUTER_SOLICITATION_NEXT_REPLY_TX 
ICMP6_ROUTER_SOLICITATION_N_NEXT 

Definition at line 1148 of file ip6_neighbor.c.

Enumerator
foreach_log_level 

Definition at line 1104 of file ip6_neighbor.c.

Function Documentation

clib_error_t* disable_ip6_interface ( vlib_main_t vm,
u32  sw_if_index 
)

Definition at line 3043 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 3216 of file ip6_neighbor.c.

+ Here is the call graph for this function:

clib_error_t* enable_ip6_interface ( vlib_main_t vm,
u32  sw_if_index 
)

Definition at line 3093 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 3176 of file ip6_neighbor.c.

+ Here is the call graph for this function:

void ethernet_ndp_change_mac ( vlib_main_t vm,
u32  sw_if_index 
)

Definition at line 3853 of file ip6_neighbor.c.

+ Here is the caller graph for this function:

static u8* format_ip6_neighbor_ip6_entry ( u8 s,
va_list *  va 
)
static

Definition at line 220 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2383 of file ip6_neighbor.c.

+ Here is the call graph for this function:

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

Definition at line 2377 of file ip6_neighbor.c.

+ Here is the call graph for this function:

static_always_inline uword icmp6_neighbor_solicitation_or_advertisement ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
uword  is_solicitation 
)

Definition at line 881 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline uword icmp6_router_advertisement ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)

Definition at line 1521 of file ip6_neighbor.c.

+ Here is the call graph for this function:

static_always_inline uword icmp6_router_solicitation ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)

Definition at line 1156 of file ip6_neighbor.c.

+ Here is the call graph for this function:

void ip6_ethernet_update_adjacency ( vnet_main_t vnm,
u32  sw_if_index,
u32  ai 
)

Definition at line 484 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2313 of file ip6_neighbor.c.

+ Here is the call graph for this function:

int ip6_interface_enabled ( vlib_main_t vm,
u32  sw_if_index 
)

Definition at line 3078 of file ip6_neighbor.c.

+ Here is the caller graph for this function:

static void ip6_nbr_probe ( ip_adjacency_t adj)
static

Definition at line 346 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static ip6_neighbor_t* ip6_nd_find ( u32  sw_if_index,
const ip6_address_t addr 
)
static

Definition at line 445 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip6_nd_mk_complete ( adj_index_t  ai,
ip6_neighbor_t nbr 
)
static

Definition at line 416 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static adj_walk_rc_t ip6_nd_mk_complete_walk ( adj_index_t  ai,
void *  ctx 
)
static

Definition at line 464 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip6_nd_mk_incomplete ( adj_index_t  ai,
ip6_neighbor_t nbr 
)
static

Definition at line 426 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static adj_walk_rc_t ip6_nd_mk_incomplete_walk ( adj_index_t  ai,
void *  ctx 
)
static

Definition at line 474 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip6_neighbor_add_del_interface_address ( ip6_main_t im,
uword  opaque,
u32  sw_if_index,
ip6_address_t address,
u32  address_length,
u32  if_address_index,
u32  is_delete 
)
static

Definition at line 3490 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* ip6_neighbor_cmd ( vlib_main_t vm,
unformat_input_t main_input,
vlib_cli_command_t cmd 
)

Definition at line 2634 of file ip6_neighbor.c.

+ Here is the call graph for this function:

static clib_error_t* ip6_neighbor_init ( vlib_main_t vm)
static

Definition at line 3591 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2184 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int ip6_neighbor_ra_config ( vlib_main_t vm,
u32  sw_if_index,
u8  suppress,
u8  managed,
u8  other,
u8  ll_option,
u8  send_unicast,
u8  cease,
u8  use_lifetime,
u32  lifetime,
u32  initial_count,
u32  initial_interval,
u32  max_interval,
u32  min_interval,
u8  is_no 
)

Definition at line 2419 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int ip6_neighbor_ra_prefix ( vlib_main_t vm,
u32  sw_if_index,
ip6_address_t prefix_addr,
u8  prefix_len,
u8  use_default,
u32  val_lifetime,
u32  pref_lifetime,
u8  no_advertise,
u8  off_link,
u8  no_autoconfig,
u8  no_onlink,
u8  is_no 
)

Definition at line 2502 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip6_neighbor_send_mldpv2_report ( u32  sw_if_index)
static

Definition at line 2018 of file ip6_neighbor.c.

+ Here is the call graph for this function:

static void ip6_neighbor_set_unset_rpc_callback ( ip6_neighbor_set_unset_rpc_args_t a)
static

Definition at line 727 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int ip6_neighbor_sort ( void *  a1,
void *  a2 
)
static

Definition at line 740 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 ip6_neighbor_sw_interface_add_del ( vnet_main_t vnm,
u32  sw_if_index,
u32  is_add 
)
static

Definition at line 1783 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 250 of file ip6_neighbor.c.

+ Here is the call graph for this function:

static void ip6_neighbor_syslog ( vlib_main_t vm,
int  priority,
char *  fmt,
  ... 
)
static

Definition at line 1119 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void ip6_print_addrs ( vlib_main_t vm,
u32 addrs 
)
static

Definition at line 2850 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* ip6_set_neighbor_limit ( u32  neighbor_limit)

Definition at line 3583 of file ip6_neighbor.c.

+ Here is the caller graph for this function:

clib_error_t* set_ip6_link_local_address ( vlib_main_t vm,
u32  sw_if_index,
ip6_address_t address,
u8  address_length 
)

Definition at line 3379 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* set_ip6_link_local_address_cmd ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)

Definition at line 3439 of file ip6_neighbor.c.

+ Here is the call graph for this function:

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

Definition at line 813 of file ip6_neighbor.c.

+ Here is the call graph for this function:

static void set_unset_ip6_neighbor_rpc ( vlib_main_t vm,
u32  sw_if_index,
ip6_address_t a,
u8 link_layer_addreess,
int  is_add,
int  is_static 
)
static

Definition at line 325 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 2868 of file ip6_neighbor.c.

+ Here is the call graph for this function:

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

Definition at line 753 of file ip6_neighbor.c.

+ Here is the call graph for this function:

static void unset_random_neighbor_entry ( void  )
static

Definition at line 282 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int vnet_add_del_ip6_nd_change_event ( vnet_main_t vnm,
void *  data_callback,
u32  pid,
void *  address_arg,
uword  node_index,
uword  type_opaque,
uword  data,
int  is_add 
)

Definition at line 3670 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int vnet_ip6_nd_term ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_buffer_t p0,
ethernet_header_t eth,
ip6_header_t ip,
u32  sw_if_index,
u16  bd_index,
u8  shg 
)

Definition at line 3754 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vnet_register_ip6_neighbor_resolution_event ( vnet_main_t vnm,
void *  address_arg,
uword  node_index,
uword  type_opaque,
uword  data 
)

Definition at line 3640 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int vnet_set_ip6_ethernet_neighbor ( vlib_main_t vm,
u32  sw_if_index,
ip6_address_t a,
u8 link_layer_address,
uword  n_bytes_link_layer_address,
int  is_static 
)

Definition at line 526 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION ( ip6_neighbor_sw_interface_up_down  )

+ Here is the caller graph for this function:

int vnet_unset_ip6_ethernet_neighbor ( vlib_main_t vm,
u32  sw_if_index,
ip6_address_t a,
u8 link_layer_address,
uword  n_bytes_link_layer_address 
)

Definition at line 678 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

vlib_cli_command_t disable_ip6_interface_command
static
Initial value:
= {
.path = "disable ip6 interface",
.short_help = "disable ip6 interface <interface>",
}
static clib_error_t * disable_ip6_interface_cmd(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)

(constructor) VLIB_CLI_COMMAND (disable_ip6_interface_command)

Definition at line 3248 of file ip6_neighbor.c.

vlib_cli_command_t enable_ip6_interface_command
static
Initial value:
= {
.path = "enable ip6 interface",
.short_help = "enable ip6 interface <interface>",
}
static clib_error_t * enable_ip6_interface_cmd(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)

(constructor) VLIB_CLI_COMMAND (enable_ip6_interface_command)

Definition at line 3208 of file ip6_neighbor.c.

vlib_node_registration_t ip6_icmp_neighbor_advertisement_node
static
Initial value:
= {
.name = "icmp6-neighbor-advertisement",
.vector_size = sizeof (u32),
.format_trace = format_icmp6_input_trace,
.n_next_nodes = 1,
.next_nodes = {
[0] = "error-drop",
},
}
static uword icmp6_neighbor_advertisement(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
unsigned int u32
Definition: types.h:88
format_function_t format_icmp6_input_trace
Definition: icmp6.h:66

(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_advertisement_node)

Definition at line 2403 of file ip6_neighbor.c.

vlib_node_registration_t ip6_icmp_neighbor_discovery_event_node
Initial value:
= {
.name = "ip6-icmp-neighbor-discovery-event-process",
}
static uword ip6_icmp_neighbor_discovery_event_process(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)

Definition at line 2369 of file ip6_neighbor.c.

vlib_node_registration_t ip6_icmp_neighbor_solicitation_node
static
Initial value:
= {
.name = "icmp6-neighbor-solicitation",
.vector_size = sizeof (u32),
.format_trace = format_icmp6_input_trace,
.next_nodes = {
},
}
unsigned int u32
Definition: types.h:88
static uword icmp6_neighbor_solicitation(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
format_function_t format_icmp6_input_trace
Definition: icmp6.h:66

(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_solicitation_node)

Definition at line 2388 of file ip6_neighbor.c.

vlib_node_registration_t ip6_icmp_router_advertisement_node
static
Initial value:
= {
.name = "icmp6-router-advertisement",
.vector_size = sizeof (u32),
.format_trace = format_icmp6_input_trace,
.n_next_nodes = 1,
.next_nodes = {
[0] = "error-drop",
},
}
unsigned int u32
Definition: types.h:88
static_always_inline uword icmp6_router_advertisement(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
format_function_t format_icmp6_input_trace
Definition: icmp6.h:66

(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_advertisement_node)

Definition at line 2355 of file ip6_neighbor.c.

vlib_node_registration_t ip6_icmp_router_solicitation_node
static
Initial value:
= {
.name = "icmp6-router-solicitation",
.vector_size = sizeof (u32),
.format_trace = format_icmp6_input_trace,
.next_nodes = {
[ICMP6_ROUTER_SOLICITATION_NEXT_REPLY_RW] = "ip6-rewrite-local",
},
}
unsigned int u32
Definition: types.h:88
static_always_inline uword icmp6_router_solicitation(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
format_function_t format_icmp6_input_trace
Definition: icmp6.h:66

(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_solicitation_node)

Definition at line 2166 of file ip6_neighbor.c.

vlib_cli_command_t ip6_nd_command
static
Initial value:
= {
.path = "ip6 nd",
.short_help = "ip6 nd <interface> ...",
.function = ip6_neighbor_cmd,
}
clib_error_t * ip6_neighbor_cmd(vlib_main_t *vm, unformat_input_t *main_input, vlib_cli_command_t *cmd)

(constructor) VLIB_CLI_COMMAND (ip6_nd_command)

Definition at line 3371 of file ip6_neighbor.c.

ip6_neighbor_main_t ip6_neighbor_main
static

Definition at line 217 of file ip6_neighbor.c.

ip6_address_t ip6a_zero
static

Definition at line 218 of file ip6_neighbor.c.

char* log_level_strings[]
static
Initial value:
= {
#define _(f,s)
}
#define foreach_log_level

Definition at line 1110 of file ip6_neighbor.c.

int logmask = 1 << LOG_DEBUG
static

Definition at line 1116 of file ip6_neighbor.c.

vlib_cli_command_t set_ip6_link_local_address_command
static
Initial value:
= {
.path = "set ip6 link-local address",
.short_help = "set ip6 link-local address <interface> <ip6-address>/<width>",
}
clib_error_t * set_ip6_link_local_address_cmd(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)

(constructor) VLIB_CLI_COMMAND (set_ip6_link_local_address_command)

Definition at line 3481 of file ip6_neighbor.c.

vlib_cli_command_t set_ip6_neighbor_command
static
Initial value:
= {
.path = "set ip6 neighbor",
.function = set_ip6_neighbor,
.short_help = "set ip6 neighbor [del] <interface> <ip6-address> <mac-address> [static]",
}
static clib_error_t * set_ip6_neighbor(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: ip6_neighbor.c:813

(constructor) VLIB_CLI_COMMAND (set_ip6_neighbor_command)

Definition at line 867 of file ip6_neighbor.c.

vlib_cli_command_t show_ip6_interface_command
static
Initial value:
= {
.path = "show ip6 interface",
.short_help = "show ip6 interface <interface>",
}
static clib_error_t * show_ip6_interface_cmd(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)

(constructor) VLIB_CLI_COMMAND (show_ip6_interface_command)

Definition at line 3035 of file ip6_neighbor.c.

vlib_cli_command_t show_ip6_neighbors_command
static
Initial value:
= {
.path = "show ip6 neighbors",
.function = show_ip6_neighbors,
.short_help = "show ip6 neighbors [<interface>]",
}
static clib_error_t * show_ip6_neighbors(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: ip6_neighbor.c:753

(constructor) VLIB_CLI_COMMAND (show_ip6_neighbors_command)

Definition at line 805 of file ip6_neighbor.c.