diff options
author | 2019-02-13 15:46:22 +0100 | |
---|---|---|
committer | 2019-03-01 17:40:40 +0100 | |
commit | efaa7522f58c0d8269081f2107e5fb6dc0afe9b9 (patch) | |
tree | 4954244827d7d976eea9cfb44ff1c2f00a877486 /utils/sysrepo-plugin/plugin/hicn_vpp_comm.h | |
parent | 05cd40ed288c1c0ef94a55477a0a0b41f7c3f37a (diff) |
[HICN-5] hicn sysrepo plugin initial
Change-Id: I4713465c39abd00fac709cfc908b9384ea75532f
Signed-off-by: Masoud Hemmatpour <mhemmatp@cisco.com>
Signed-off-by: Luca Muscariello <lumuscar+fdio@cisco.com>
Signed-off-by: Masoud Hemmatpour <mhemmatp@cisco.com>
Signed-off-by: Luca Muscariello <lumuscar+fdio@cisco.com>
Signed-off-by: Masoud Hemmatpour <mhemmatp@cisco.com>
Diffstat (limited to 'utils/sysrepo-plugin/plugin/hicn_vpp_comm.h')
-rw-r--r-- | utils/sysrepo-plugin/plugin/hicn_vpp_comm.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/utils/sysrepo-plugin/plugin/hicn_vpp_comm.h b/utils/sysrepo-plugin/plugin/hicn_vpp_comm.h new file mode 100644 index 000000000..bc8937f02 --- /dev/null +++ b/utils/sysrepo-plugin/plugin/hicn_vpp_comm.h @@ -0,0 +1,110 @@ +/* + * 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 + + + +//Here it is the definition + + +#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_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(); +extern vapi_ctx_t g_vapi_ctx_instance; +DEFINE_VAPI_MSG_IDS_HICN_API_JSON; +#endif //__HICN_VPP_COMMM_H__
\ No newline at end of file |