X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlibapi%2Fapi_types.h;fp=src%2Fvlibapi%2Fapi_types.h;h=759298e735dc6dcaeb097dbefe0153001a1e0311;hb=413f4a5b2123c1625d615315db293a080078482b;hp=0000000000000000000000000000000000000000;hpb=6f666ad99ae1e384aa851af5e0feed3d2a25e709;p=vpp.git 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 + +/* 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