diff options
author | Luca Muscariello <lumuscar+fdio@cisco.com> | 2019-03-29 15:45:34 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2019-03-29 15:45:34 +0000 |
commit | fe16eee83b82383974996cffc0f423aa9deb50d9 (patch) | |
tree | b84ef8e4d2c4259ec0d4b1748f56755a3920076c /utils/sysrepo-plugins/hicn-plugin/plugin/hicn_vpp_comm.h | |
parent | 65317f78ac16a40d0ce189ec90eca45cbd064006 (diff) | |
parent | c405a5bb3a2299c34f11431be477a228715e66fa (diff) |
Merge "[HICN-90] adding hicn-light to sysrepo-plugins"
Diffstat (limited to 'utils/sysrepo-plugins/hicn-plugin/plugin/hicn_vpp_comm.h')
-rw-r--r-- | utils/sysrepo-plugins/hicn-plugin/plugin/hicn_vpp_comm.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/utils/sysrepo-plugins/hicn-plugin/plugin/hicn_vpp_comm.h b/utils/sysrepo-plugins/hicn-plugin/plugin/hicn_vpp_comm.h new file mode 100644 index 000000000..aff8e2ea1 --- /dev/null +++ b/utils/sysrepo-plugins/hicn-plugin/plugin/hicn_vpp_comm.h @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2019 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 __HICN_VPP_COMMM_H__ +#define __HICN_VPP_COMMM_H__ +#include <sysrepo.h> +#include <sysrepo/plugins.h> //for HICN_LOG_DBG +#include <sysrepo/values.h> +#include <vapi/vapi.h> + +#ifndef HICN_THIS_FUNC +#ifdef __FUNCTION__ +#define HICN_THIS_FUNC __FUNCTION__ +#else +#define HICN_THIS_FUNC __func__ +#endif +#endif + +#ifndef _NOLOG +#define HICN_LOG_DBG SRP_LOG_DBG +#define HICN_LOG_ERR SRP_LOG_ERR +#define HICN_LOG_DBG_MSG SRP_LOG_DBG_MSG +#define HICN_LOG_ERR_MSG SRP_LOG_ERR_MSG +#else +#define HICN_LOG_DBG // printf +#define HICN_LOG_DBG // SRP_LOG_DBG +#define HICN_LOG_ERR // SRP_LOG_ERR +#define HICN_LOG_DBG_MSG // SRP_LOG_DBG_MSG +#define HICN_LOG_ERR_MSG // SRP_LOG_ERR_MSG +#endif + +//DEFINE_VAPI_MSG_IDS_VPE_API_JSON + +DEFINE_VAPI_MSG_IDS_HICN_API_JSON; +// ctx vpp connect +extern vapi_ctx_t g_vapi_ctx_instance; + +//Here it is the definition + +#define VPP_INTFC_NAME_LEN 64 +#define VPP_MAC_ADDRESS_LEN 8 +#define VPP_IP6_ADDRESS_LEN 16 +#define HICN_INVOKE_BEGIN HICN_LOG_DBG("inovke %s bein.", HICN_THIS_FUNC); +#define HICN_INVOKE_END \ + HICN_LOG_DBG("inovke %s end,with return OK.", HICN_THIS_FUNC); +#define HICN_INVOKE_ENDX(...) \ + HICN_LOG_DBG("inovke %s end,with %s.", HICN_THIS_FUNC, ##__VA_ARGS__) + +#define ARG_CHECK(retval, arg) \ + do { \ + if (NULL == (arg)) { \ + HICN_LOG_ERR_MSG(#arg ":NULL pointer passed."); \ + return (retval); \ + } \ + } while (0) + + + +#define ARG_CHECK2(retval, arg1, arg2) \ + ARG_CHECK(retval, arg1); \ + ARG_CHECK(retval, arg2) + +#define ARG_CHECK5(retval, arg1, arg2, arg3, arg4, arg5) \ + ARG_CHECK(retval, arg1); \ + ARG_CHECK(retval, arg2); \ + ARG_CHECK(retval, arg3); \ + ARG_CHECK(retval, arg4); \ + ARG_CHECK(retval, arg5) + + + +/** + * when use tihs must fist DEFINE_VAPI_MSG_IDS_VXLAN_API_JSON + */ +#define HICN_VPP_VAPI_RECV \ + do { \ + size_t size; \ + int recv_vapimsgid = -1; \ + vapi_recv(g_vapi_ctx_instance, (void *)&resp, &size, 0, 0); \ + recv_vapimsgid = vapi_lookup_vapi_msg_id_t( \ + g_vapi_ctx_instance, ntohs(resp->header._vl_msg_id)); \ + if (recv_vapimsgid <= vapi_msg_id_get_next_index_reply || \ + recv_vapimsgid >= vapi_get_message_count()) { \ + HICN_LOG_DBG("***recv error msgid[%d] not in [0-%d) ,try again!***\n", \ + recv_vapimsgid, vapi_get_message_count()); \ + } else { \ + HICN_LOG_DBG("recv msgid [%d]\n", recv_vapimsgid); \ + break; \ + } \ + } while (1); + +#define HICN_REGISTER_RPC_EVT_HANDLER(rpc_evt_handle) \ + do { \ + sr_error_t rc = rpc_evt_handle(session, &subscription); \ + if (SR_ERR_OK != rc) { \ + HICN_LOG_ERR("load plugin failed: %s", sr_strerror(rc)); \ + sr_unsubscribe(session, subscription); \ + HICN_INVOKE_ENDX(sr_strerror(rc)); \ + return rc; \ + } \ + } while (0); + + +int hicn_connect_vpp(); +int hicn_disconnect_vpp(); + +#endif //__HICN_VPP_COMMM_H__
\ No newline at end of file |