![]() |
FD.io VPP
v19.08.3-2-gbabecb413
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 |
ip6_neighbor_public_main_t | ip6_neighbor_public_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 |
vlib_node_registration_t | send_rs_process_node |
(constructor) VLIB_REGISTER_NODE (send_rs_process_node) More... | |
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 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... | |
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_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 64 of file ip6_neighbor.c.
#define DEF_ADV_VALID_LIFETIME 2592000 |
Definition at line 63 of file ip6_neighbor.c.
#define DEF_CURR_HOP_LIMIT 64 |
Definition at line 127 of file ip6_neighbor.c.
#define DEF_DEF_RTR_LIFETIME 3 * DEF_MAX_RADV_INTERVAL |
Definition at line 128 of file ip6_neighbor.c.
#define DEF_MAX_RADV_INTERVAL 200 |
Definition at line 125 of file ip6_neighbor.c.
#define DEF_MIN_RADV_INTERVAL .75 * DEF_MAX_RADV_INTERVAL |
Definition at line 126 of file ip6_neighbor.c.
#define ETHER_MAC_ADDR_LEN 6 |
Definition at line 40 of file ip6_neighbor.c.
#define foreach_log_level |
Definition at line 1405 of file ip6_neighbor.c.
#define IP6_NBR_MK_KEY | ( | k, | |
sw_if_index, | |||
addr | |||
) |
Definition at line 516 of file ip6_neighbor.c.
#define MAX_DEF_RTR_LIFETIME 9000 |
Definition at line 129 of file ip6_neighbor.c.
#define MAX_DELAY_BETWEEN_RAS 1800 /* seconds */ |
Definition at line 134 of file ip6_neighbor.c.
#define MAX_INITIAL_RTR_ADVERT_INTERVAL 16 /* seconds */ |
Definition at line 131 of file ip6_neighbor.c.
#define MAX_INITIAL_RTR_ADVERTISEMENTS 3 /*transmissions */ |
Definition at line 132 of file ip6_neighbor.c.
#define MAX_RA_DELAY_TIME .5 /* seconds */ |
Definition at line 135 of file ip6_neighbor.c.
#define MIN_ADV_VALID_LIFETIME 7203 /* seconds */ |
Definition at line 62 of file ip6_neighbor.c.
#define MIN_DELAY_BETWEEN_RAS 3 /* seconds */ |
Definition at line 133 of file ip6_neighbor.c.
Enumerator | |
---|---|
ICMP6_NEIGHBOR_SOLICITATION_NEXT_DROP | |
ICMP6_NEIGHBOR_SOLICITATION_NEXT_REPLY | |
ICMP6_NEIGHBOR_SOLICITATION_N_NEXT |
Definition at line 1141 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 1478 of file ip6_neighbor.c.
Enumerator | |
---|---|
IP6_DISCOVER_NEIGHBOR_ERROR_DROP | |
IP6_DISCOVER_NEIGHBOR_ERROR_REQUEST_SENT | |
IP6_DISCOVER_NEIGHBOR_ERROR_NO_SOURCE_ADDRESS |
Definition at line 3155 of file ip6_neighbor.c.
Enumerator | |
---|---|
IP6_DISCOVER_NEIGHBOR_NEXT_DROP | |
IP6_DISCOVER_NEIGHBOR_NEXT_REPLY_TX | |
IP6_DISCOVER_NEIGHBOR_N_NEXT |
Definition at line 3148 of file ip6_neighbor.c.
Enumerator | |
---|---|
ICMP6_ND_EVENT_INIT |
Definition at line 219 of file ip6_neighbor.c.
enum log_level_t |
Enumerator | |
---|---|
foreach_log_level |
Definition at line 1415 of file ip6_neighbor.c.
clib_error_t* call_ip6_neighbor_callbacks | ( | void * | data, |
_vnet_ip6_neighbor_function_list_elt_t * | elt | ||
) |
|
inlinestatic |
|
inlinestatic |
Definition at line 2298 of file ip6_neighbor.c.
clib_error_t* disable_ip6_interface | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
Definition at line 4069 of file ip6_neighbor.c.
|
static |
clib_error_t* enable_ip6_interface | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
Definition at line 4122 of file ip6_neighbor.c.
|
static |
void ethernet_ndp_change_mac | ( | u32 | sw_if_index | ) |
|
static |
Definition at line 729 of file ip6_neighbor.c.
Definition at line 339 of file ip6_neighbor.c.
Definition at line 2287 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 1149 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 icmp6_send_router_solicitation | ( | vlib_main_t * | vm, |
u32 | sw_if_index, | ||
u8 | stop, | ||
icmp6_send_router_solicitation_params_t * | params | ||
) |
Definition at line 2488 of file ip6_neighbor.c.
|
static |
|
static |
Definition at line 3163 of file ip6_neighbor.c.
void ip6_ethernet_update_adjacency | ( | vnet_main_t * | vnm, |
u32 | sw_if_index, | ||
u32 | ai | ||
) |
Definition at line 609 of file ip6_neighbor.c.
int ip6_get_ll_address | ( | u32 | sw_if_index, |
ip6_address_t * | addr | ||
) |
|
static |
|
static |
int ip6_interface_enabled | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
|
static |
Definition at line 423 of file ip6_neighbor.c.
|
static |
Definition at line 524 of file ip6_neighbor.c.
|
static |
Definition at line 493 of file ip6_neighbor.c.
|
static |
Definition at line 543 of file ip6_neighbor.c.
|
static |
Definition at line 503 of file ip6_neighbor.c.
|
static |
Definition at line 553 of file ip6_neighbor.c.
|
static |
callback when an interface address is added or deleted
Definition at line 4473 of file ip6_neighbor.c.
|
static |
Add a multicast Address to the advertised MLD set.
Definition at line 2577 of file ip6_neighbor.c.
|
static |
Add a multicast Address to the advertised MLD set.
Definition at line 2523 of file ip6_neighbor.c.
|
static |
Definition at line 700 of file ip6_neighbor.c.
|
static |
Definition at line 361 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 2556 of file ip6_neighbor.c.
ip6_address_t ip6_neighbor_get_link_local_address | ( | u32 | sw_if_index | ) |
|
static |
Definition at line 4580 of file ip6_neighbor.c.
|
static |
Definition at line 2899 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 4822 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 3392 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 3494 of file ip6_neighbor.c.
|
static |
clib_error_t* ip6_neighbor_set_link_local_address | ( | vlib_main_t * | vm, |
u32 | sw_if_index, | ||
ip6_address_t * | address | ||
) |
Definition at line 4426 of file ip6_neighbor.c.
|
static |
Definition at line 954 of file ip6_neighbor.c.
|
static |
Definition at line 965 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 2593 of file ip6_neighbor.c.
|
static |
|
static |
Definition at line 1431 of file ip6_neighbor.c.
|
static |
Definition at line 4553 of file ip6_neighbor.c.
ip6_neighbor_t* ip6_neighbors_entries | ( | u32 | sw_if_index | ) |
Definition at line 985 of file ip6_neighbor.c.
ip6_neighbor_t* ip6_neighbors_pool | ( | void | ) |
|
static |
Definition at line 3853 of file ip6_neighbor.c.
clib_error_t* ip6_set_neighbor_limit | ( | u32 | neighbor_limit | ) |
|
static |
Definition at line 308 of file ip6_neighbor.c.
|
static |
Definition at line 316 of file ip6_neighbor.c.
Definition at line 2274 of file ip6_neighbor.c.
void send_ip6_na | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
Definition at line 4932 of file ip6_neighbor.c.
void send_ip6_na_w_addr | ( | vlib_main_t * | vm, |
const ip6_address_t * | ip6_addr, | ||
u32 | sw_if_index | ||
) |
Definition at line 4941 of file ip6_neighbor.c.
|
static |
|
static |
|
static |
|
static |
Definition at line 404 of file ip6_neighbor.c.
|
static |
|
static |
|
inlinestatic |
Definition at line 2364 of file ip6_neighbor.c.
int vnet_add_del_ip6_nd_change_event | ( | vnet_main_t * | vnm, |
ip6_nd_change_event_cb_t | data_callback, | ||
u32 | pid, | ||
void * | address_arg, | ||
uword | node_index, | ||
uword | type_opaque, | ||
uword | data, | ||
int | is_add | ||
) |
Definition at line 4673 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 4743 of file ip6_neighbor.c.
|
static |
publish wildcard arp event
sw_if_index | The interface on which the ARP entries are acted |
Definition at line 270 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 4643 of file ip6_neighbor.c.
int vnet_set_ip6_ethernet_neighbor | ( | vlib_main_t * | vm, |
u32 | sw_if_index, | ||
const ip6_address_t * | a, | ||
const mac_address_t * | mac, | ||
ip_neighbor_flags_t | flags | ||
) |
Definition at line 760 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, | ||
const ip6_address_t * | a | ||
) |
Definition at line 912 of file ip6_neighbor.c.
|
static |
Definition at line 284 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (disable_ip6_interface_command)
Definition at line 4293 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (enable_ip6_interface_command)
Definition at line 4254 of file ip6_neighbor.c.
|
static |
Definition at line 3350 of file ip6_neighbor.c.
vlib_node_registration_t ip6_discover_neighbor_node |
(constructor) VLIB_REGISTER_NODE (ip6_discover_neighbor_node)
Definition at line 3373 of file ip6_neighbor.c.
vlib_node_registration_t ip6_glean_node |
(constructor) VLIB_REGISTER_NODE (ip6_glean_node)
Definition at line 3358 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_advertisement_node)
Definition at line 3132 of file ip6_neighbor.c.
vlib_node_registration_t ip6_icmp_neighbor_discovery_event_node |
Definition at line 3087 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_solicitation_node)
Definition at line 3114 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_advertisement_node)
Definition at line 3071 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_solicitation_node)
Definition at line 2879 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (ip6_nd_command)
Definition at line 4417 of file ip6_neighbor.c.
|
static |
Definition at line 234 of file ip6_neighbor.c.
ip6_neighbor_public_main_t ip6_neighbor_public_main |
Definition at line 235 of file ip6_neighbor.c.
|
static |
Definition at line 236 of file ip6_neighbor.c.
|
static |
Definition at line 1422 of file ip6_neighbor.c.
|
static |
Definition at line 1428 of file ip6_neighbor.c.
vlib_node_registration_t send_rs_process_node |
(constructor) VLIB_REGISTER_NODE (send_rs_process_node)
Definition at line 2480 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_nd_proxy_command)
Definition at line 4898 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_neighbor_command)
Definition at line 1133 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (show_ip6_interface_command)
Definition at line 4060 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (show_ip6_neighbors_command)
Definition at line 1072 of file ip6_neighbor.c.