19 #ifndef included_ip6_neighbor_h 20 #define included_ip6_neighbor_h 41 u8 link_layer_address[8];
54 u8 suppress,
u8 managed,
u8 other,
55 u8 ll_option,
u8 send_unicast,
u8 cease,
56 u8 use_lifetime,
u32 lifetime,
57 u32 initial_count,
u32 initial_interval,
58 u32 max_interval,
u32 min_interval,
63 u8 use_default,
u32 val_lifetime,
64 u32 pref_lifetime,
u8 no_advertise,
65 u8 off_link,
u8 no_autoconfig,
66 u8 no_onlink,
u8 is_no);
79 u8 * link_layer_address,
80 uword n_bytes_link_layer_address,
87 u8 * link_layer_address,
89 n_bytes_link_layer_address);
130 u8 router_address[16];
143 typedef struct _vnet_ip6_neighbor_function_list_elt
145 struct _vnet_ip6_neighbor_function_list_elt *next_ip6_neighbor_function;
147 } _vnet_ip6_neighbor_function_list_elt_t;
156 #define _VNET_IP6_NEIGHBOR_FUNCTION_DECL(f,tag) \ 158 static void __vnet_ip6_neighbor_function_init_##tag##_##f (void) \ 159 __attribute__((__constructor__)) ; \ 161 static void __vnet_ip6_neighbor_function_init_##tag##_##f (void) \ 163 ip6_neighbor_public_main_t * nm = &ip6_neighbor_public_main; \ 164 static _vnet_ip6_neighbor_function_list_elt_t init_function; \ 165 init_function.next_ip6_neighbor_function = nm->tag##_functions; \ 166 nm->tag##_functions = &init_function; \ 167 init_function.fp = (void *) &f; \ 170 static void __vnet_ip6_neighbor_function_deinit_##tag##_##f (void) \ 171 __attribute__((__destructor__)) ; \ 173 static void __vnet_ip6_neighbor_function_deinit_##tag##_##f (void) \ 175 ip6_neighbor_public_main_t * nm = &ip6_neighbor_public_main; \ 176 _vnet_ip6_neighbor_function_list_elt_t *next; \ 177 if (nm->tag##_functions->fp == (void *) &f) \ 179 nm->tag##_functions = \ 180 nm->tag##_functions->next_ip6_neighbor_function; \ 183 next = nm->tag##_functions; \ 184 while (next->next_ip6_neighbor_function) \ 186 if (next->next_ip6_neighbor_function->fp == (void *) &f) \ 188 next->next_ip6_neighbor_function = \ 189 next->next_ip6_neighbor_function->next_ip6_neighbor_function; \ 192 next = next->next_ip6_neighbor_function; \ 196 #define VNET_IP6_NEIGHBOR_RA_FUNCTION(f) \ 197 _VNET_IP6_NEIGHBOR_FUNCTION_DECL(f,ra_report) 200 _vnet_ip6_neighbor_function_list_elt_t
ip6_neighbor_t * ip6_neighbors_pool(void)
ip6_address_t ip6_neighbor_get_link_local_address(u32 sw_if_index)
ip6_neighbor_flags_t flags
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)
void wc_nd_set_publisher_node(uword node_index, uword event_type)
void icmp6_send_router_solicitation(vlib_main_t *vm, u32 sw_if_index, u8 stop, icmp6_send_router_solicitation_params_t *params)
u32 time_in_msec_between_retransmitted_neighbor_solicitations
ip6_neighbor_public_main_t ip6_neighbor_public_main
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)
u32 neighbor_reachable_time_in_msec
enum ip6_neighbor_flags_t_ ip6_neighbor_flags_t
u16 router_lifetime_in_sec
ra_report_prefix_info_t * prefixes
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 ip6_neighbor_proxy_add_del(u32 sw_if_index, ip6_address_t *addr, u8 is_add)
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 ...
u32 fib_node_index_t
A typedef of a node index.
fib_node_index_t fib_entry_index
void vnet_register_ip6_neighbor_resolution_event(vnet_main_t *vnm, void *address_arg, uword node_index, uword type_opaque, uword data)
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)
ip6_address_t ip6_address
clib_error_t * call_ip6_neighbor_callbacks(void *data, _vnet_ip6_neighbor_function_list_elt_t *elt)
void ra_set_publisher_node(uword node_index, uword event_type)
clib_error_t * ip6_set_neighbor_limit(u32 neighbor_limit)
_vnet_ip6_neighbor_function_list_elt_t * ra_report_functions
ip6_neighbor_t * ip6_neighbors_entries(u32 sw_if_index)
ip6_address_t dst_address