_(GET_NODE_GRAPH, get_node_graph) \
_(GET_NEXT_INDEX, get_next_index) \
_(LOG_DUMP, log_dump) \
-_(SHOW_VPE_SYSTEM_TIME_TICKS, show_vpe_system_time_ticks) \
+_(SHOW_VPE_SYSTEM_TIME, show_vpe_system_time) \
_(GET_F64_ENDIAN_VALUE, get_f64_endian_value) \
_(GET_F64_INCREMENT_BY_ONE, get_f64_increment_by_one) \
char *vpe_api_get_version (void);
char *vpe_api_get_build_date (void);
- u32 program_len = strnlen_s ("vpe", 32);
- u32 version_len = strnlen_s (vpe_api_get_version (), 32);
- u32 build_date_len = strnlen_s (vpe_api_get_build_date (), 32);
- u32 build_directory_len = strnlen_s (vpe_api_get_build_directory (), 256);
-
- u32 n = program_len + version_len + build_date_len + build_directory_len;
-
/* *INDENT-OFF* */
- REPLY_MACRO3(VL_API_SHOW_VERSION_REPLY, n,
+ REPLY_MACRO2(VL_API_SHOW_VERSION_REPLY,
({
- char *p = (char *)&rmp->program;
- p += vl_api_to_api_string(program_len, "vpe", (vl_api_string_t *)p);
- p += vl_api_to_api_string(version_len, vpe_api_get_version(), (vl_api_string_t *)p);
- p += vl_api_to_api_string(build_date_len, vpe_api_get_build_date(), (vl_api_string_t *)p);
- vl_api_to_api_string(build_directory_len, vpe_api_get_build_directory(), (vl_api_string_t *)p);
+ strncpy ((char *) rmp->program, "vpe", ARRAY_LEN(rmp->program)-1);
+ strncpy ((char *) rmp->build_directory, vpe_api_get_build_directory(),
+ ARRAY_LEN(rmp->build_directory)-1);
+ strncpy ((char *) rmp->version, vpe_api_get_version(),
+ ARRAY_LEN(rmp->version)-1);
+ strncpy ((char *) rmp->build_date, vpe_api_get_build_date(),
+ ARRAY_LEN(rmp->build_date)-1);
}));
/* *INDENT-ON* */
}
static void
show_log_details (vl_api_registration_t * reg, u32 context,
- f64 timestamp_ticks, u8 * timestamp,
+ f64 timestamp,
vl_api_log_level_t * level, u8 * msg_class, u8 * message)
{
u32 msg_size;
vl_api_log_details_t *rmp;
- msg_size =
- sizeof (*rmp) + vec_len (timestamp) + vec_len (msg_class) +
- vec_len (message);
+ int class_len =
+ clib_min (vec_len (msg_class) + 1, ARRAY_LEN (rmp->msg_class));
+ int message_len =
+ clib_min (vec_len (message) + 1, ARRAY_LEN (rmp->message));
+ msg_size = sizeof (*rmp) + class_len + message_len;
rmp = vl_msg_api_alloc (msg_size);
clib_memset (rmp, 0, msg_size);
rmp->_vl_msg_id = ntohs (VL_API_LOG_DETAILS);
rmp->context = context;
- rmp->timestamp_ticks = clib_host_to_net_f64 (timestamp_ticks);
+ rmp->timestamp = clib_host_to_net_f64 (timestamp);
rmp->level = htonl (*level);
- char *p = (char *) &rmp->timestamp;
- p += vl_api_vec_to_api_string (timestamp, (vl_api_string_t *) p);
- p += vl_api_vec_to_api_string (msg_class, (vl_api_string_t *) p);
- p += vl_api_vec_to_api_string (message, (vl_api_string_t *) p);
+ memcpy (rmp->msg_class, msg_class, class_len - 1);
+ memcpy (rmp->message, message, message_len - 1);
+ /* enforced by memset() above */
+ ASSERT (0 == rmp->msg_class[class_len - 1]);
+ ASSERT (0 == rmp->message[message_len - 1]);
vl_api_send_msg (reg, (u8 *) rmp);
}
e = vec_elt_at_index (lm->entries, i);
if (start_time <= e->timestamp + time_offset)
show_log_details (reg, mp->context, e->timestamp + time_offset,
- format (0, "%U", format_time_float, 0,
- e->timestamp + time_offset),
(vl_api_log_level_t *) & e->level,
format (0, "%U", format_vlib_log_class, e->class),
e->string);
}
static void
- vl_api_show_vpe_system_time_ticks_t_handler
- (vl_api_show_vpe_system_time_ticks_t * mp)
+vl_api_show_vpe_system_time_t_handler (vl_api_show_vpe_system_time_t * mp)
{
int rv = 0;
- vl_api_show_vpe_system_time_ticks_reply_t *rmp;
+ vl_api_show_vpe_system_time_reply_t *rmp;
/* *INDENT-OFF* */
- REPLY_MACRO2(VL_API_SHOW_VPE_SYSTEM_TIME_TICKS_REPLY,
+ REPLY_MACRO2(VL_API_SHOW_VPE_SYSTEM_TIME_REPLY,
({
- rmp->vpe_system_time_ticks = clib_host_to_net_f64 (unix_time_now ());
+ rmp->vpe_system_time = clib_host_to_net_f64 (unix_time_now ());
}));
/* *INDENT-ON* */
}