diff options
Diffstat (limited to 'src/vlibapi')
-rw-r--r-- | src/vlibapi/api_types.h | 27 | ||||
-rw-r--r-- | src/vlibapi/api_types_inlines.h | 59 |
2 files changed, 59 insertions, 27 deletions
diff --git a/src/vlibapi/api_types.h b/src/vlibapi/api_types.h index 406ccfa6745..0289a417c79 100644 --- a/src/vlibapi/api_types.h +++ b/src/vlibapi/api_types.h @@ -31,31 +31,4 @@ 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); -} - -/* 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; -} - -static inline u32 -vl_api_string_len (vl_api_string_t * astr) -{ - return ntohl (astr->length); -} - -static inline char * -vl_api_from_api_string_c (vl_api_string_t *astr) -{ - return strndup((char *)astr->buf, ntohl (astr->length)); -} - #endif diff --git a/src/vlibapi/api_types_inlines.h b/src/vlibapi/api_types_inlines.h new file mode 100644 index 00000000000..a26d91b5558 --- /dev/null +++ b/src/vlibapi/api_types_inlines.h @@ -0,0 +1,59 @@ +/* + *------------------------------------------------------------------ + * api_types.h + * + * Copyright (c) 2018 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------ + */ + +static inline int +vl_api_to_api_string (u32 len, const char *buf, vl_api_string_t * str) +{ + clib_memcpy_fast(str->buf, buf, len); + str->length = htonl (len); + return len + sizeof (u32); +} + +static inline int +vl_api_vec_to_api_string (const u8 *vec, vl_api_string_t * str) +{ + u32 len = vec_len(vec); + clib_memcpy(str->buf, vec, len); + str->length = htonl (len); + return len + sizeof (u32); +} + +/* 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; +} + +static inline u32 +vl_api_string_len (vl_api_string_t * astr) +{ + return ntohl (astr->length); +} + +/* + * Returns a new vector. Remember to free it after use. + */ +static inline u8 * +vl_api_from_api_to_vec (vl_api_string_t *astr) +{ + u8 *v = 0; + vec_add(v, astr->buf, ntohl(astr->length)); + return v; +} |