return 1;
}
- clib_memcpy (mac, eth_if->address, 6);
+ 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 (!(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)