mactime: add a "top" command to watch device stats
[vpp.git] / src / vnet / dhcp / dhcp6_pd_client_dp.c
index 009de4a..c665b17 100644 (file)
@@ -25,6 +25,7 @@
 #include <vlibmemory/api.h>
 #include <vnet/dhcp/dhcp6_pd_client_dp.h>
 #include <vnet/dhcp/dhcp6_client_common_dp.h>
+#include <vnet/ip/ip_types_api.h>
 
 #include <vnet/vnet_msg_enum.h>
 
@@ -457,7 +458,7 @@ void
   params.mrt = ntohl (mp->mrt);
   params.mrc = ntohl (mp->mrc);
   params.mrd = ntohl (mp->mrd);
-  params.msg_type = mp->msg_type;
+  params.msg_type = ntohl (mp->msg_type);
   params.T1 = ntohl (mp->T1);
   params.T2 = ntohl (mp->T2);
   n_prefixes = ntohl (mp->n_prefixes);
@@ -471,8 +472,8 @@ void
        &params.prefixes[i];
       pref->preferred_lt = ntohl (pi->preferred_time);
       pref->valid_lt = ntohl (pi->valid_time);
-      memcpy (pref->prefix.as_u8, pi->prefix, 16);
-      pref->prefix_length = pi->prefix_length;
+      ip6_address_decode (pi->prefix.address, &pref->prefix);
+      pref->prefix_length = pi->prefix.len;
     }
 
   dhcp6_pd_send_client_message (vm, ntohl (mp->sw_if_index), mp->stop,
@@ -501,7 +502,7 @@ static uword
 dhcp6_pd_reply_process (vlib_main_t * vm, vlib_node_runtime_t * rt,
                        vlib_frame_t * f)
 {
-  /* These cross the longjmp  boundry (vlib_process_wait_for_event)
+  /* These cross the longjmp  boundary (vlib_process_wait_for_event)
    * and need to be volatile - to prevent them from being optimized into
    * a register - which could change during suspension */
 
@@ -523,7 +524,7 @@ dhcp6_pd_reply_process (vlib_main_t * vm, vlib_node_runtime_t * rt,
                sizeof (vl_api_dhcp6_pd_prefix_info_t);
              vl_api_dhcp6_pd_reply_event_t *event =
                clib_mem_alloc (event_size);
-             memset (event, 0, event_size);
+             clib_memset (event, 0, event_size);
 
              event->sw_if_index = htonl (events[i].body.sw_if_index);
              event->server_index = htonl (events[i].body.server_index);
@@ -542,8 +543,8 @@ dhcp6_pd_reply_process (vlib_main_t * vm, vlib_node_runtime_t * rt,
              for (j = 0; j < vec_len (events[i].prefixes); j++)
                {
                  dhcp6_prefix_info_t *info = &events[i].prefixes[j];
-                 memcpy (prefix->prefix, &info->prefix, 16);
-                 prefix->prefix_length = info->prefix_length;
+                 ip6_address_encode (&info->prefix, prefix->prefix.address);
+                 prefix->prefix.len = info->prefix_length;
                  prefix->valid_time = htonl (info->valid_time);
                  prefix->preferred_time = htonl (info->preferred_time);
                  prefix++;
@@ -647,10 +648,8 @@ dhcp6_pd_client_init (vlib_main_t * vm)
 
   cm->vlib_main = vm;
   cm->vnet_main = vnet_get_main ();
-
   cm->publisher_node = ~0;
-
-  cm->seed = 0xdeaddabe;
+  cm->seed = (u32) clib_cpu_time_now ();
 
   return 0;
 }