aboutsummaryrefslogtreecommitdiffstats
path: root/src/vlibapi/api_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vlibapi/api_common.h')
-rw-r--r--src/vlibapi/api_common.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/vlibapi/api_common.h b/src/vlibapi/api_common.h
index bb1997041f4..fac4c96ee3c 100644
--- a/src/vlibapi/api_common.h
+++ b/src/vlibapi/api_common.h
@@ -142,6 +142,26 @@ typedef struct msgbuf_
u8 data[0]; /**< actual message begins here */
} msgbuf_t;
+CLIB_NOSANITIZE_ADDR static inline void
+VL_MSG_API_UNPOISON (const void *a)
+{
+ const msgbuf_t *m = &((const msgbuf_t *) a)[-1];
+ CLIB_MEM_UNPOISON (m, sizeof (*m) + ntohl (m->data_len));
+}
+
+CLIB_NOSANITIZE_ADDR static inline void
+VL_MSG_API_SVM_QUEUE_UNPOISON (const svm_queue_t * q)
+{
+ CLIB_MEM_UNPOISON (q, sizeof (*q) + q->elsize * q->maxsize);
+}
+
+static inline void
+VL_MSG_API_POISON (const void *a)
+{
+ const msgbuf_t *m = &((const msgbuf_t *) a)[-1];
+ CLIB_MEM_POISON (m, sizeof (*m) + ntohl (m->data_len));
+}
+
/* api_shared.c prototypes */
void vl_msg_api_handler (void *the_msg);
void vl_msg_api_handler_no_free (void *the_msg);