aboutsummaryrefslogtreecommitdiffstats
path: root/src/vat
diff options
context:
space:
mode:
authorOle Troan <ot@cisco.com>2019-06-12 14:28:14 +0200
committerPaul Vinciguerra <pvinci@vinciconsulting.com>2019-06-18 11:47:21 +0000
commit283cd2e9afcab1407d5614d79da4354790fa059a (patch)
tree21ff50ec22a5f9989bfdee76fcbb418ada91232f /src/vat
parenta8c0b62a88494e9a8562c57dfd3fd75818a629a7 (diff)
api: string type to convert to vector
Previous use of strndup() required user to remember to call free(). Now return a vector pointing directly to the API message string. Of course user must remember to copy the string out if lifetime is longer than API message lifetime. Change-Id: Ib5e2b3d52d258e1a42ea9ea9a9e04abbe360e2bf Type: fix Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/vat')
-rw-r--r--src/vat/api_format.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/vat/api_format.c b/src/vat/api_format.c
index 60d66be368d..5eb44c99b5d 100644
--- a/src/vat/api_format.c
+++ b/src/vat/api_format.c
@@ -58,6 +58,7 @@
#include "vat/json_format.h"
#include <vnet/ip/ip_types_api.h>
#include <vnet/ethernet/ethernet_types_api.h>
+#include <vlibapi/api_types_inlines.h>
#include <inttypes.h>
#include <sys/stat.h>
@@ -1299,30 +1300,31 @@ static void vl_api_show_version_reply_t_handler
if (retval >= 0)
{
- char *s;
+ u8 *s = 0;
char *p = (char *) &mp->program;
- s = vl_api_from_api_string_c ((vl_api_string_t *) p);
- errmsg (" program: %s\n", s);
- free (s);
+ s = vl_api_from_api_to_vec ((vl_api_string_t *) p);
+ errmsg (" program: %v\n", s);
+ vec_free (s);
p +=
vl_api_string_len ((vl_api_string_t *) p) + sizeof (vl_api_string_t);
- s = vl_api_from_api_string_c ((vl_api_string_t *) p);
- errmsg (" version: %s\n", s);
- free (s);
+ s = vl_api_from_api_to_vec ((vl_api_string_t *) p);
+ errmsg (" version: %v\n", s);
+ vec_free (s);
p +=
vl_api_string_len ((vl_api_string_t *) p) + sizeof (vl_api_string_t);
- s = vl_api_from_api_string_c ((vl_api_string_t *) p);
- errmsg (" build date: %s\n", s);
- free (s);
+ s = vl_api_from_api_to_vec ((vl_api_string_t *) p);
+ errmsg (" build date: %v\n", s);
+ vec_free (s);
p +=
vl_api_string_len ((vl_api_string_t *) p) + sizeof (vl_api_string_t);
- s = vl_api_from_api_string_c ((vl_api_string_t *) p);
- errmsg ("build directory: %s\n", s);
- free (s);
+ s = vl_api_from_api_to_vec ((vl_api_string_t *) p);
+ vec_free (s);
+
+ errmsg ("build directory: %v\n", s);
}
vam->retval = retval;
vam->result_ready = 1;