FD.io VPP  v18.01-8-g0eacf49
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_radv_prefix_t
 
struct  ip6_mldp_group_t
 
struct  ip6_radv_t
 
struct  pending_resolution_t
 
struct  ip6_neighbor_main_t
 
union  ip6_icmp_neighbor_discovery_event_data_t
 
struct  ip6_neighbor_set_unset_rpc_args_t
 

Macros

#define ETHER_MAC_ADDR_LEN   6
 
#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  ip6_icmp_neighbor_discovery_event_type_t { ICMP6_ND_EVENT_INIT }
 
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 void wc_nd_signal_report (wc_nd_report_t *r)
 
static int vnet_nd_wc_publish (u32 sw_if_index, u8 *mac, ip6_address_t *ip6)
 publish wildcard arp event More...
 
void wc_nd_set_publisher_node (uword node_index, uword event_type)
 
static u8format_ip6_neighbor_ip6_entry (u8 *s, va_list *va)
 
static void ip6_neighbor_adj_fib_remove (ip6_neighbor_t *n, u32 fib_index)
 
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_address, int is_add, int is_static, int is_no_fib_entry)
 
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)
 
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)
 
static void ip6_neighbor_adj_fib_add (ip6_neighbor_t *n, u32 fib_index)
 
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 is_no_fib_entry)
 
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)
 
ip6_neighbor_tip6_neighbors_entries (u32 sw_if_index)
 
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 void ip6_neighbor_add_mld_prefix (ip6_radv_t *radv_info, ip6_address_t *addr)
 Add a multicast Address to the advertised MLD set. More...
 
static void ip6_neighbor_del_mld_prefix (ip6_radv_t *radv_info, ip6_address_t *addr)
 Delete a multicast Address from the advertised MLD set. More...
 
static void ip6_neighbor_add_mld_grp (ip6_radv_t *a, ip6_multicast_address_scope_t scope, ip6_multicast_link_local_group_id_t group)
 Add a multicast Address to the advertised MLD set. More...
 
u32 ip6_neighbor_sw_interface_add_del (vnet_main_t *vnm, u32 sw_if_index, u32 is_add)
 create and initialize router advertisement parameters with default values for this intfc More...
 
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)
 
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)
 callback when an interface address is added or deleted More...
 
clib_error_tip6_set_neighbor_limit (u32 neighbor_limit)
 
static void ip6_neighbor_table_bind (ip6_main_t *im, uword opaque, u32 sw_if_index, u32 new_fib_index, u32 old_fib_index)
 
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)
 
int ip6_neighbor_proxy_add_del (u32 sw_if_index, ip6_address_t *addr, u8 is_del)
 
static clib_error_tset_ip6_nd_proxy_cmd (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
void ethernet_ndp_change_mac (u32 sw_if_index)
 
void send_ip6_na (vlib_main_t *vm, vnet_hw_interface_t *hi)
 

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...
 
static vlib_cli_command_t set_ip6_nd_proxy_command
 (constructor) VLIB_CLI_COMMAND (set_ip6_nd_proxy_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 62 of file ip6_neighbor.c.

#define DEF_ADV_VALID_LIFETIME   2592000

Definition at line 61 of file ip6_neighbor.c.

#define DEF_CURR_HOP_LIMIT   64

Definition at line 125 of file ip6_neighbor.c.

#define DEF_DEF_RTR_LIFETIME   3 * DEF_MAX_RADV_INTERVAL

Definition at line 126 of file ip6_neighbor.c.

#define DEF_MAX_RADV_INTERVAL   200

Definition at line 123 of file ip6_neighbor.c.

#define DEF_MIN_RADV_INTERVAL   .75 * DEF_MAX_RADV_INTERVAL

Definition at line 124 of file ip6_neighbor.c.

#define ETHER_MAC_ADDR_LEN   6

Definition at line 38 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")
#define DEBUG
Definition: vppctl.c:25
#define INFO(...)
Definition: main.c:64

Definition at line 1276 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:83

Definition at line 513 of file ip6_neighbor.c.

#define MAX_DEF_RTR_LIFETIME   9000

Definition at line 127 of file ip6_neighbor.c.

#define MAX_DELAY_BETWEEN_RAS   1800 /* seconds */

Definition at line 132 of file ip6_neighbor.c.

#define MAX_INITIAL_RTR_ADVERT_INTERVAL   16 /* seconds */

Definition at line 129 of file ip6_neighbor.c.

#define MAX_INITIAL_RTR_ADVERTISEMENTS   3 /*transmissions */

Definition at line 130 of file ip6_neighbor.c.

#define MAX_RA_DELAY_TIME   .5 /* seconds */

Definition at line 133 of file ip6_neighbor.c.

#define MIN_ADV_VALID_LIFETIME   7203 /* seconds */

Definition at line 60 of file ip6_neighbor.c.

#define MIN_DELAY_BETWEEN_RAS   3 /* seconds */

Definition at line 131 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 1017 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 1332 of file ip6_neighbor.c.

Enumerator
ICMP6_ND_EVENT_INIT 

Definition at line 204 of file ip6_neighbor.c.

Enumerator
foreach_log_level 

Definition at line 1286 of file ip6_neighbor.c.

Function Documentation

clib_error_t* disable_ip6_interface ( vlib_main_t vm,
u32  sw_if_index 
)

Definition at line 3382 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 3564 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 3435 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 3525 of file ip6_neighbor.c.

+ Here is the call graph for this function:

void ethernet_ndp_change_mac ( u32  sw_if_index)

Definition at line 4255 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 267 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 2653 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 2644 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 1025 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 1752 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 1341 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 558 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 2576 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 3420 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 422 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 521 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 490 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 540 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)
static

Definition at line 500 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 550 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

callback when an interface address is added or deleted

Definition at line 3829 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_mld_grp ( ip6_radv_t a,
ip6_multicast_address_scope_t  scope,
ip6_multicast_link_local_group_id_t  group 
)
static

Add a multicast Address to the advertised MLD set.

Definition at line 2128 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_mld_prefix ( ip6_radv_t radv_info,
ip6_address_t addr 
)
static

Add a multicast Address to the advertised MLD set.

Definition at line 2074 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_adj_fib_add ( ip6_neighbor_t n,
u32  fib_index 
)
static

Definition at line 639 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_adj_fib_remove ( ip6_neighbor_t n,
u32  fib_index 
)
static

Definition at line 301 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 2938 of file ip6_neighbor.c.

+ Here is the call graph for this function:

static void ip6_neighbor_del_mld_prefix ( ip6_radv_t radv_info,
ip6_address_t addr 
)
static

Delete a multicast Address from the advertised MLD set.

Definition at line 2107 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_init ( vlib_main_t vm)
static

Definition at line 3936 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 2447 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int ip6_neighbor_proxy_add_del ( u32  sw_if_index,
ip6_address_t addr,
u8  is_del 
)

Definition at line 4169 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 2699 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 2801 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 2275 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 851 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 864 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

create and initialize router advertisement parameters with default values for this intfc

Definition at line 2144 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 321 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 1302 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_table_bind ( ip6_main_t im,
uword  opaque,
u32  sw_if_index,
u32  new_fib_index,
u32  old_fib_index 
)
static

Definition at line 3909 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ip6_neighbor_t* ip6_neighbors_entries ( u32  sw_if_index)

Definition at line 877 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 3170 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 3900 of file ip6_neighbor.c.

+ Here is the caller graph for this function:

void send_ip6_na ( vlib_main_t vm,
vnet_hw_interface_t hi 
)

Definition at line 4274 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 ( vlib_main_t vm,
u32  sw_if_index,
ip6_address_t address 
)

Definition at line 3727 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 3782 of file ip6_neighbor.c.

+ Here is the call graph for this function:

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

Definition at line 4217 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 952 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_address,
int  is_add,
int  is_static,
int  is_no_fib_entry 
)
static

Definition at line 401 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 3187 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 897 of file ip6_neighbor.c.

+ Here is the call graph for this function:

static void unset_random_neighbor_entry ( void  )
static

Definition at line 357 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 4027 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 
)

Definition at line 4092 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int vnet_nd_wc_publish ( u32  sw_if_index,
u8 mac,
ip6_address_t ip6 
)
static

publish wildcard arp event

Parameters
sw_if_indexThe interface on which the ARP entires are acted

Definition at line 229 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 3997 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,
int  is_no_fib_entry 
)

Definition at line 656 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 793 of file ip6_neighbor.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void wc_nd_set_publisher_node ( uword  node_index,
uword  event_type 
)

Definition at line 259 of file ip6_neighbor.c.

+ Here is the caller graph for this function:

static void wc_nd_signal_report ( wc_nd_report_t r)
static

Definition at line 243 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 3594 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 3555 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] = "ip6-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:64

(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_advertisement_node)

Definition at line 2681 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 2636 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:64

(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_solicitation_node)

Definition at line 2663 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] = "ip6-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:64

(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_advertisement_node)

Definition at line 2620 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-mcast",
},
}
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:64

(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_solicitation_node)

Definition at line 2427 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 3718 of file ip6_neighbor.c.

ip6_neighbor_main_t ip6_neighbor_main
static

Definition at line 219 of file ip6_neighbor.c.

ip6_address_t ip6a_zero
static

Definition at line 220 of file ip6_neighbor.c.

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

Definition at line 1293 of file ip6_neighbor.c.

int logmask = 1 << LOG_DEBUG
static

Definition at line 1299 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>",
}
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 3817 of file ip6_neighbor.c.

vlib_cli_command_t set_ip6_nd_proxy_command
static
Initial value:
=
{
.path = "set ip6 nd proxy",
.short_help = "set ip6 nd proxy <HOST> <INTERFACE>",
.function = set_ip6_nd_proxy_cmd,
}
static clib_error_t * set_ip6_nd_proxy_cmd(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)

(constructor) VLIB_CLI_COMMAND (set_ip6_nd_proxy_command)

Definition at line 4246 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:952

(constructor) VLIB_CLI_COMMAND (set_ip6_neighbor_command)

Definition at line 1009 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 3373 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:897

(constructor) VLIB_CLI_COMMAND (show_ip6_neighbors_command)

Definition at line 944 of file ip6_neighbor.c.