X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlibapi%2Fapi_types.h;h=21fcde53b0e86b52daa18b18345e101aa7920fd6;hb=2dbee9361e74d03727a8b618ba80a5e28c006011;hp=406ccfa67454661cdc1a936c9b6ea8457851619e;hpb=3b0d7e42f65eaf8d84cfe26e2e9f5244c554b934;p=vpp.git diff --git a/src/vlibapi/api_types.h b/src/vlibapi/api_types.h index 406ccfa6745..21fcde53b0e 100644 --- a/src/vlibapi/api_types.h +++ b/src/vlibapi/api_types.h @@ -20,10 +20,17 @@ #ifndef included_api_types_h #define included_api_types_h +#include +#include #include #include #include +#ifdef __cplusplus +extern "C" +{ +#endif + /* VPP API string type */ typedef struct { @@ -31,31 +38,22 @@ typedef struct u8 buf[0]; } __attribute__ ((packed)) vl_api_string_t; -static inline int -vl_api_to_api_string (u32 len, const char *buf, vl_api_string_t * str) -{ - memcpy(str->buf, buf, len); - str->length = htonl (len); - return len + sizeof (u32); -} +/* Nul terminated string to vl_api_string_t */ +extern int vl_api_c_string_to_api_string (const char *buf, vl_api_string_t * str); +/* NON nul terminated vector to vl_api_string_t */ +extern int vl_api_vec_to_api_string (const u8 *vec, vl_api_string_t * str); -/* Return a pointer to the API string (not nul terminated */ -static inline u8 * -vl_api_from_api_string (vl_api_string_t * astr) -{ - return astr->buf; -} +extern u32 vl_api_string_len (vl_api_string_t * astr); -static inline u32 -vl_api_string_len (vl_api_string_t * astr) -{ - return ntohl (astr->length); -} +/* Returns new vector. NON nul terminated */ +extern u8 * vl_api_from_api_to_new_vec (vl_api_string_t *astr); +/* Returns new vector. Nul terminated */ +extern char * vl_api_from_api_to_new_c_string (vl_api_string_t *astr); -static inline char * -vl_api_from_api_string_c (vl_api_string_t *astr) -{ - return strndup((char *)astr->buf, ntohl (astr->length)); +extern u8 *vl_api_format_string (u8 *s, va_list *args); + +#ifdef __cplusplus } +#endif #endif