FD.io VPP
v18.01-8-g0eacf49
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 1276 of file ip6_neighbor.c.
#define IP6_NBR_MK_KEY | ( | k, | |
sw_if_index, | |||
addr | |||
) |
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.
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.
enum log_level_t |
Enumerator | |
---|---|
foreach_log_level |
Definition at line 1286 of file ip6_neighbor.c.
clib_error_t* disable_ip6_interface | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
Definition at line 3382 of file ip6_neighbor.c.
|
static |
clib_error_t* enable_ip6_interface | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
Definition at line 3435 of file ip6_neighbor.c.
|
static |
void ethernet_ndp_change_mac | ( | u32 | sw_if_index | ) |
Definition at line 267 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 1025 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 558 of file ip6_neighbor.c.
|
static |
int ip6_interface_enabled | ( | vlib_main_t * | vm, |
u32 | sw_if_index | ||
) |
|
static |
Definition at line 422 of file ip6_neighbor.c.
|
static |
Definition at line 521 of file ip6_neighbor.c.
|
static |
Definition at line 490 of file ip6_neighbor.c.
|
static |
Definition at line 540 of file ip6_neighbor.c.
|
static |
Definition at line 500 of file ip6_neighbor.c.
|
static |
Definition at line 550 of file ip6_neighbor.c.
|
static |
callback when an interface address is added or deleted
Definition at line 3829 of file ip6_neighbor.c.
|
static |
Add a multicast Address to the advertised MLD set.
Definition at line 2128 of file ip6_neighbor.c.
|
static |
Add a multicast Address to the advertised MLD set.
Definition at line 2074 of file ip6_neighbor.c.
|
static |
Definition at line 639 of file ip6_neighbor.c.
|
static |
Definition at line 301 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 2107 of file ip6_neighbor.c.
|
static |
Definition at line 3936 of file ip6_neighbor.c.
|
static |
Definition at line 2447 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 4169 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 2699 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 2801 of file ip6_neighbor.c.
|
static |
|
static |
Definition at line 851 of file ip6_neighbor.c.
|
static |
Definition at line 864 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 2144 of file ip6_neighbor.c.
|
static |
|
static |
Definition at line 1302 of file ip6_neighbor.c.
|
static |
Definition at line 3909 of file ip6_neighbor.c.
ip6_neighbor_t* ip6_neighbors_entries | ( | u32 | sw_if_index | ) |
Definition at line 877 of file ip6_neighbor.c.
|
static |
Definition at line 3170 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 4274 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 3727 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 401 of file ip6_neighbor.c.
|
static |
|
static |
|
static |
Definition at line 357 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 4027 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 4092 of file ip6_neighbor.c.
|
static |
publish wildcard arp event
sw_if_index | The interface on which the ARP entires are acted |
Definition at line 229 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 3997 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 656 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 793 of file ip6_neighbor.c.
|
static |
Definition at line 243 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (disable_ip6_interface_command)
Definition at line 3594 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (enable_ip6_interface_command)
Definition at line 3555 of file ip6_neighbor.c.
|
static |
(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 |
Definition at line 2636 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_neighbor_solicitation_node)
Definition at line 2663 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_advertisement_node)
Definition at line 2620 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_REGISTER_NODE (ip6_icmp_router_solicitation_node)
Definition at line 2427 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (ip6_nd_command)
Definition at line 3718 of file ip6_neighbor.c.
|
static |
Definition at line 219 of file ip6_neighbor.c.
|
static |
Definition at line 220 of file ip6_neighbor.c.
|
static |
Definition at line 1293 of file ip6_neighbor.c.
|
static |
Definition at line 1299 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_link_local_address_command)
Definition at line 3817 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_nd_proxy_command)
Definition at line 4246 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (set_ip6_neighbor_command)
Definition at line 1009 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (show_ip6_interface_command)
Definition at line 3373 of file ip6_neighbor.c.
|
static |
(constructor) VLIB_CLI_COMMAND (show_ip6_neighbors_command)
Definition at line 944 of file ip6_neighbor.c.