FD.io VPP
v17.04.2-2-ga8f93f8
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 1187 of file ip6_neighbor.c.
#define IP6_NBR_MK_KEY | ( | k, | |
sw_if_index, | |||
addr | |||
) |
Definition at line 446 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 927 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 1243 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 1197 of file ip6_neighbor.c.
clib_error_t* disable_ip6_interface | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
Definition at line 3297 of file ip6_neighbor.c.
|
static |
clib_error_t* enable_ip6_interface | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
Definition at line 3350 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 935 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 491 of file ip6_neighbor.c.
|
static |
int ip6_interface_enabled | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
|
static |
Definition at line 355 of file ip6_neighbor.c.
|
static |
Definition at line 454 of file ip6_neighbor.c.
|
static |
Definition at line 423 of file ip6_neighbor.c.
|
static |
Definition at line 473 of file ip6_neighbor.c.
|
static |
Definition at line 433 of file ip6_neighbor.c.
|
static |
Definition at line 483 of file ip6_neighbor.c.
|
static |
callback when an interface address is added or deleted
Definition at line 3743 of file ip6_neighbor.c.
|
static |
Add a multicast Address to the advertised MLD set.
Definition at line 2043 of file ip6_neighbor.c.
|
static |
Add a multicast Address to the advertised MLD set.
Definition at line 1989 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 2022 of file ip6_neighbor.c.
|
static |
Definition at line 3823 of file ip6_neighbor.c.
|
static |
Definition at line 2362 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 4082 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 2614 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 2716 of file ip6_neighbor.c.
|
static |
|
static |
Definition at line 761 of file ip6_neighbor.c.
|
static |
Definition at line 774 of file ip6_neighbor.c.
|
static |
create and initialize router advertisement parameters with default values for this intfc
Definition at line 2059 of file ip6_neighbor.c.
|
static |
|
static |
Definition at line 1213 of file ip6_neighbor.c.
ip6_neighbor_t* ip6_neighbors_entries | ( | u32 | sw_if_index | ) |
Definition at line 787 of file ip6_neighbor.c.
|
static |
Definition at line 3085 of file ip6_neighbor.c.
clib_error_t* ip6_set_neighbor_limit | ( | u32 | neighbor_limit | ) |
clib_error_t* set_ip6_link_local_address | ( | vlib_main_t * | vm, |
u32 | sw_if_index, | ||
ip6_address_t * | address | ||
) |
Definition at line 3641 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 334 of file ip6_neighbor.c.
|
static |
|
static |
|
static |
Definition at line 290 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 3907 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 3989 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 3877 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 570 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 715 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (disable_ip6_interface_command)
Definition at line 3508 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (enable_ip6_interface_command)
Definition at line 3469 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_advertisement_node)
Definition at line 2596 of file ip6_neighbor.c.
vlib_node_registration_t ip6_icmp_neighbor_discovery_event_node |
Definition at line 2551 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_solicitation_node)
Definition at line 2578 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_advertisement_node)
Definition at line 2535 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_solicitation_node)
Definition at line 2342 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (ip6_nd_command)
Definition at line 3632 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 1204 of file ip6_neighbor.c.
|
static |
Definition at line 1210 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_link_local_address_command)
Definition at line 3731 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_nd_proxy_command)
Definition at line 4159 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_neighbor_command)
Definition at line 919 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (show_ip6_interface_command)
Definition at line 3288 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (show_ip6_neighbors_command)
Definition at line 854 of file ip6_neighbor.c.