diff options
Diffstat (limited to 'src/vlibapi')
-rw-r--r-- | src/vlibapi/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/vlibapi/api_common.h | 1 | ||||
-rw-r--r-- | src/vlibapi/api_types.h | 54 |
3 files changed, 56 insertions, 0 deletions
diff --git a/src/vlibapi/CMakeLists.txt b/src/vlibapi/CMakeLists.txt index 55f87b8f7ac..dfd6b5b5045 100644 --- a/src/vlibapi/CMakeLists.txt +++ b/src/vlibapi/CMakeLists.txt @@ -17,6 +17,7 @@ install( api.h vat_helper_macros.h api_common.h + api_types.h DESTINATION include/vlibapi diff --git a/src/vlibapi/api_common.h b/src/vlibapi/api_common.h index 497a1e8bd16..735921b30f7 100644 --- a/src/vlibapi/api_common.h +++ b/src/vlibapi/api_common.h @@ -25,6 +25,7 @@ */ #include <vppinfra/clib_error.h> +#include <vlibapi/api_types.h> #include <svm/svm_common.h> #include <svm/queue.h> diff --git a/src/vlibapi/api_types.h b/src/vlibapi/api_types.h new file mode 100644 index 00000000000..759298e735d --- /dev/null +++ b/src/vlibapi/api_types.h @@ -0,0 +1,54 @@ +/* + *------------------------------------------------------------------ + * 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. + *------------------------------------------------------------------ + */ + +#ifndef included_api_types_h +#define included_api_types_h + +#include <vppinfra/types.h> + +/* VPP API string type */ +typedef struct +{ + u32 length; + 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) +{ + if (strncpy_s ((char *) str->buf, len, buf, len - 1) != 0) + len = 0; + str->length = clib_host_to_net_u32 (len); + return len + sizeof (u32); +} + +/* Return a C string from API string */ +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 clib_net_to_host_u32 (astr->length); +} + +#endif |