ip: fix clang debug compilation
[vpp.git] / src / vnet / ip / rd_cp.c
index 164b304..2af24c0 100644 (file)
@@ -227,7 +227,7 @@ get_interface_mac_address (u32 sw_if_index, u8 mac[])
       return 1;
     }
 
-  clib_memcpy (mac, eth_if->address, 6);
+  clib_memcpy_fast (mac, eth_if->address, 6);
 
   return 0;
 }
@@ -297,7 +297,7 @@ ip6_ra_report_handler (void *data)
         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
           {
@@ -311,7 +311,7 @@ ip6_ra_report_handler (void *data)
       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
@@ -346,8 +346,8 @@ ip6_ra_report_handler (void *data)
       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;
@@ -440,9 +440,15 @@ rd_cp_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
       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)
@@ -450,13 +456,15 @@ rd_cp_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
               }
             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)