FD.io VPP
v17.07.01-10-g3be13f0
Vector Packet Processing
|
IPv6 Neighbor Adjacency and Neighbor Discovery. More...
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 |
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... | |
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.
#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 |
Definition at line 1214 of file ip6_neighbor.c.
#define IP6_NBR_MK_KEY | ( | k, | |
sw_if_index, | |||
addr | |||
) |
Definition at line 458 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.
Enumerator | |
---|---|
ICMP6_NEIGHBOR_SOLICITATION_NEXT_DROP | |
ICMP6_NEIGHBOR_SOLICITATION_NEXT_REPLY | |
ICMP6_NEIGHBOR_SOLICITATION_N_NEXT |
Definition at line 955 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 1270 of file ip6_neighbor.c.
Enumerator | |
---|---|
ICMP6_ND_EVENT_INIT |
Definition at line 201 of file ip6_neighbor.c.
enum log_level_t |
Enumerator | |
---|---|
foreach_log_level |
Definition at line 1224 of file ip6_neighbor.c.
clib_error_t* disable_ip6_interface | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
Definition at line 3323 of file ip6_neighbor.c.
|
static |
clib_error_t* enable_ip6_interface | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
Definition at line 3376 of file ip6_neighbor.c.
|
static |
void ethernet_ndp_change_mac | ( | u32 | sw_if_index | ) |
Definition at line 220 of file ip6_neighbor.c.
|
static |
|
static |
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 963 of file ip6_neighbor.c.
static_always_inline uword icmp6_router_advertisement | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
static_always_inline uword icmp6_router_solicitation | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
void ip6_ethernet_update_adjacency | ( | vnet_main_t * | vnm, |
u32 | sw_if_index, | ||
u32 | ai | ||
) |
Definition at line 503 of file ip6_neighbor.c.
|
static |
int ip6_interface_enabled | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
|
static |
Definition at line 367 of file ip6_neighbor.c.
|
static |
Definition at line 466 of file ip6_neighbor.c.
|
static |
Definition at line 435 of file ip6_neighbor.c.
|
static |
Definition at line 485 of file ip6_neighbor.c.
|
static |
Definition at line 445 of file ip6_neighbor.c.
|
static |
Definition at line 495 of file ip6_neighbor.c.
|
static |
callback when an interface address is added or deleted
Definition at line 3769 of file ip6_neighbor.c.
|
static |
Add a multicast Address to the advertised MLD set.
Definition at line 2069 of file ip6_neighbor.c.
|
static |
Add a multicast Address to the advertised MLD set.
Definition at line 2015 of file ip6_neighbor.c.
clib_error_t* ip6_neighbor_cmd | ( | vlib_main_t * | vm, |
unformat_input_t * | main_input, | ||
vlib_cli_command_t * | cmd | ||
) |
|
static |
Delete a multicast Address from the advertised MLD set.
Definition at line 2048 of file ip6_neighbor.c.
|
static |
Definition at line 3849 of file ip6_neighbor.c.
|
static |
Definition at line 2388 of file ip6_neighbor.c.
int ip6_neighbor_proxy_add_del | ( | u32 | sw_if_index, |
ip6_address_t * | addr, | ||
u8 | is_del | ||
) |
Definition at line 4091 of file ip6_neighbor.c.
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 2640 of file ip6_neighbor.c.
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 2742 of file ip6_neighbor.c.
|
static |
|
static |
Definition at line 789 of file ip6_neighbor.c.
|
static |
Definition at line 802 of file ip6_neighbor.c.
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 2085 of file ip6_neighbor.c.
|
static |
|
static |
Definition at line 1240 of file ip6_neighbor.c.
ip6_neighbor_t* ip6_neighbors_entries | ( | u32 | sw_if_index | ) |
Definition at line 815 of file ip6_neighbor.c.
|
static |
Definition at line 3111 of file ip6_neighbor.c.
clib_error_t* ip6_set_neighbor_limit | ( | u32 | neighbor_limit | ) |
void send_ip6_na | ( | vlib_main_t * | vm, |
vnet_hw_interface_t * | hi | ||
) |
Definition at line 4196 of file ip6_neighbor.c.
clib_error_t* set_ip6_link_local_address | ( | vlib_main_t * | vm, |
u32 | sw_if_index, | ||
ip6_address_t * | address | ||
) |
Definition at line 3667 of file ip6_neighbor.c.
clib_error_t* set_ip6_link_local_address_cmd | ( | vlib_main_t * | vm, |
unformat_input_t * | input, | ||
vlib_cli_command_t * | cmd | ||
) |
|
static |
|
static |
|
static |
Definition at line 346 of file ip6_neighbor.c.
|
static |
|
static |
|
static |
Definition at line 302 of file ip6_neighbor.c.
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 3933 of file ip6_neighbor.c.
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 3998 of file ip6_neighbor.c.
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 3903 of file ip6_neighbor.c.
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 583 of file ip6_neighbor.c.
VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION | ( | ip6_neighbor_sw_interface_up_down | ) |
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 731 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (disable_ip6_interface_command)
Definition at line 3534 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (enable_ip6_interface_command)
Definition at line 3495 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_advertisement_node)
Definition at line 2622 of file ip6_neighbor.c.
vlib_node_registration_t ip6_icmp_neighbor_discovery_event_node |
Definition at line 2577 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_solicitation_node)
Definition at line 2604 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_advertisement_node)
Definition at line 2561 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_solicitation_node)
Definition at line 2368 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (ip6_nd_command)
Definition at line 3658 of file ip6_neighbor.c.
|
static |
Definition at line 216 of file ip6_neighbor.c.
|
static |
Definition at line 217 of file ip6_neighbor.c.
|
static |
Definition at line 1231 of file ip6_neighbor.c.
|
static |
Definition at line 1237 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_link_local_address_command)
Definition at line 3757 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_nd_proxy_command)
Definition at line 4168 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_neighbor_command)
Definition at line 947 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (show_ip6_interface_command)
Definition at line 3314 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (show_ip6_neighbors_command)
Definition at line 882 of file ip6_neighbor.c.