svm_queue_t *vl_input_queue;
u32 my_client_index;
+ /* logging */
+ vlib_log_class_t log_class;
+
/* convenience */
vlib_main_t *vlib_main;
vnet_main_t *vnet_main;
if (!vnet_sw_interface_is_api_valid (rm->vnet_main, sw_if_index))
{
- clib_warning ("Invalid sw_if_index");
+ vlib_log_warn (rm->log_class, "Invalid sw_if_index");
return 1;
}
if (si->type == VNET_SW_INTERFACE_TYPE_HARDWARE)
eth_if = ethernet_get_interface (ðernet_main, si->hw_if_index);
- clib_memcpy (mac, eth_if->address, 6);
+ if (!eth_if)
+ {
+ vlib_log_warn (rm->log_class, "Failed to get hardware interface");
+ return 1;
+ }
+
+ clib_memcpy_fast (mac, eth_if->address, 6);
return 0;
}
if (default_route->sw_if_index != sw_if_index)
;
else if (0 != memcmp (&default_route->router_address,
- r->router_address, 16))
+ &r->router_address, 16))
;
else
{
if (!route_already_present)
{
if (router_lifetime_in_sec != 0)
- add_default_route (vm, sw_if_index, (void *) r->router_address,
+ add_default_route (vm, sw_if_index, &r->router_address,
current_time + router_lifetime_in_sec);
}
else
if (get_interface_mac_address (sw_if_index, mac) != 0)
{
- clib_warning ("Error getting MAC address");
+ vlib_log_warn (rm->log_class, "Error getting MAC address");
return clib_error_return (0, "Error getting MAC address");
}
if (!(prefix->flags & PREFIX_FLAG_A))
continue;
- dst_address = &prefix->dst_address;
- prefix_length = prefix->dst_address_length;
+ dst_address = &prefix->prefix.fp_addr.ip6;
+ prefix_length = prefix->prefix.fp_len;
if (ip6_address_is_link_local_unicast (dst_address))
continue;
do
{
due_time = current_time + 1e9;
+ u32 index;
+ /*
+ * we do not use pool_foreach() to iterate over pool elements here
+ * as we are removing elements inside the loop body
+ */
/* *INDENT-OFF* */
- pool_foreach (slaac_address, rm->slaac_address_pool,
+ pool_foreach_index (index, rm->slaac_address_pool,
({
+ slaac_address = pool_elt_at_index(rm->slaac_address_pool, index);
if (slaac_address->due_time > current_time)
{
if (slaac_address->due_time < due_time)
}
else
{
+ u32 sw_if_index = slaac_address->sw_if_index;
remove_slaac_address (vm, slaac_address);
/* make sure ip6 stays enabled */
- ip6_enable (slaac_address->sw_if_index);
+ ip6_enable (sw_if_index);
}
}));
- pool_foreach (default_route, rm->default_route_pool,
+ pool_foreach_index (index, rm->default_route_pool,
({
+ default_route = pool_elt_at_index(rm->default_route_pool, index);
if (default_route->due_time > current_time)
{
if (default_route->due_time < due_time)
if (!vnet_sw_interface_is_api_valid (vnm, sw_if_index))
{
- clib_warning ("Invalid sw_if_index");
+ vlib_log_warn (rm->log_class, "Invalid sw_if_index");
return 1;
}
BAD_SW_IF_INDEX_LABEL;
- REPLY_MACRO (VL_API_SW_INTERFACE_SET_TABLE_REPLY);
+ REPLY_MACRO (VL_API_IP6_ND_ADDRESS_AUTOCONFIG_REPLY);
}
#define vl_msg_name_crc_list
rm->api_main = am;
rm->node_index = rd_cp_process_node.index;
+ rm->log_class = vlib_log_register_class ("rd_cp", 0);
+
#define _(N,n) \
vl_msg_api_set_handlers(VL_API_##N, #n, \
vl_api_##n##_t_handler, \