summaryrefslogtreecommitdiffstats
path: root/src/scvpp/src/interface.c
diff options
context:
space:
mode:
authorjackiechen1985 <xiaobo.chen@tieto.com>2019-07-03 17:07:56 +0800
committerjackiechen1985 <xiaobo.chen@tieto.com>2019-07-03 17:13:44 +0800
commitadc56bc5ddcdf947864d982cda809588b7ccd8bc (patch)
tree484cb25388b4b5ea2bc6ac66a17026774cb91529 /src/scvpp/src/interface.c
parentf086b6eec410b18daba34e6a0dd64f46c076bbe7 (diff)
Enable mutil-thread VPP API calling support.
- Lock/Unlock before and after invoke VPP API; - Introduce sc_vpp_main_t for warpping VPP API context, mode and pid; Change-Id: If1b1c040cb4723ecc4e88c5060c0380de7c715c0 Signed-off-by: jackiechen1985 <xiaobo.chen@tieto.com>
Diffstat (limited to 'src/scvpp/src/interface.c')
-rw-r--r--src/scvpp/src/interface.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/scvpp/src/interface.c b/src/scvpp/src/interface.c
index 3a30dc5..b6b1216 100644
--- a/src/scvpp/src/interface.c
+++ b/src/scvpp/src/interface.c
@@ -34,6 +34,10 @@ sw_interface_dump_cb(struct vapi_ctx_s *ctx, void *callback_ctx,
vapi_payload_sw_interface_details *passed;
+ if (is_last) {
+ return VAPI_OK;
+ }
+
ARG_CHECK2(VAPI_EINVAL, callback_ctx, reply);
//copy
@@ -50,14 +54,14 @@ bin_api_sw_interface_dump(vapi_payload_sw_interface_details *details,
vapi_msg_sw_interface_dump *mp;
vapi_error_e rv;
- mp = vapi_alloc_sw_interface_dump(g_vapi_ctx);
+ mp = vapi_alloc_sw_interface_dump(sc_vpp_main.vapi_ctx);
assert(NULL != mp);
/* Dump a specific interfaces */
mp->payload.name_filter_valid = true;
strncpy((char *)mp->payload.name_filter, iface_name, IFACE_SUBSTR);
- VAPI_CALL(vapi_sw_interface_dump(g_vapi_ctx, mp,
+ VAPI_CALL(vapi_sw_interface_dump(sc_vpp_main.vapi_ctx, mp,
sw_interface_dump_cb, details));
if (rv != VAPI_OK)
return -SCVPP_EINVAL;
@@ -111,13 +115,13 @@ struct elt* interface_dump_all()
vapi_msg_sw_interface_dump *mp;
vapi_error_e rv;
- mp = vapi_alloc_sw_interface_dump(g_vapi_ctx);
+ mp = vapi_alloc_sw_interface_dump(sc_vpp_main.vapi_ctx);
/* Dump all */
mp->payload.name_filter_valid = false;
memset(mp->payload.name_filter, 0, sizeof(mp->payload.name_filter));
- VAPI_CALL(vapi_sw_interface_dump(g_vapi_ctx, mp, sw_interface_all_cb,
+ VAPI_CALL(vapi_sw_interface_dump(sc_vpp_main.vapi_ctx, mp, sw_interface_all_cb,
&stack));
if (VAPI_OK != rv)
return NULL;
@@ -140,12 +144,12 @@ int interface_enable(const char *interface_name, const bool enable)
if (rc != 0)
return -SCVPP_NOT_FOUND;
- mp = vapi_alloc_sw_interface_set_flags(g_vapi_ctx);
+ mp = vapi_alloc_sw_interface_set_flags(sc_vpp_main.vapi_ctx);
assert(NULL != mp);
mp->payload.sw_if_index = sw_if_index;
mp->payload.admin_up_down = enable;
- VAPI_CALL(vapi_sw_interface_set_flags(g_vapi_ctx, mp,
+ VAPI_CALL(vapi_sw_interface_set_flags(sc_vpp_main.vapi_ctx, mp,
sw_interface_set_flags_cb, NULL));
if (VAPI_OK != rv)
return -SCVPP_EINVAL;