aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'libtransport/src/hicn/transport/core/vpp_binary_api_internal.h')
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/core/vpp_binary_api_internal.h33
1 files changed, 23 insertions, 10 deletions
diff --git a/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h b/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h
index 22b665e96..a6e2c01a3 100755..100644
--- a/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h
+++ b/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h
@@ -27,16 +27,9 @@ extern "C" {
#include <vlibapi/api.h>
#include <vlibmemory/api.h>
-struct vpp_binary_api {
- api_main_t *api_main;
- u32 my_client_index;
- unix_shared_memory_queue_t *vl_input_queue;
- vlib_main_t *vlib_main;
- sem_t *semaphore;
- u32 ping_id;
- int ret_val;
- void *user_param;
-};
+#include <stdint.h>
+
+typedef struct vpp_binary_api vpp_binary_api_t;
struct vpp_plugin_binary_api {
vpp_binary_api_t *vpp_api;
@@ -44,6 +37,26 @@ struct vpp_plugin_binary_api {
u32 my_client_index;
};
+#define POINTER_MAP_SIZE 32
+typedef struct {
+ void *global_pointers_map[POINTER_MAP_SIZE];
+ uint8_t global_pointers_map_index;
+} context_store_t;
+
+#define CONTEXT_SAVE(context_store, pointer, mp) \
+ do { \
+ context_store \
+ .global_pointers_map[context_store.global_pointers_map_index] = \
+ pointer; \
+ mp->context = context_store.global_pointers_map_index++; \
+ context_store.global_pointers_map_index %= POINTER_MAP_SIZE; \
+ } while (0);
+
+#define CONTEXT_GET(context_store, mp, pointer) \
+ do { \
+ pointer = context_store.global_pointers_map[mp->context]; \
+ } while (0);
+
#define M(T, mp) \
do { \
mp = vl_msg_api_alloc_as_if_client(sizeof(*mp)); \