#include <memif/memif_all_api_h.h>
#undef vl_api_version
-/*
- * A handy macro to set up a message reply.
- * Assumes that the following variables are available:
- * mp - pointer to request message
- * rmp - pointer to reply message type
- * rv - return value
- */
-#define REPLY_MACRO(t) \
-do { \
- svm_queue_t * q = \
- vl_api_client_index_to_input_queue (mp->client_index); \
- if (!q) \
- return; \
- \
- rmp = vl_msg_api_alloc (sizeof (*rmp)); \
- rmp->_vl_msg_id = htons ((t)+mm->msg_id_base); \
- rmp->context = mp->context; \
- rmp->retval = htonl (rv); \
- \
- vl_msg_api_send_shmem (q, (u8 *)&rmp); \
-} while(0);
-
-#define REPLY_MACRO2(t, body) \
-do { \
- svm_queue_t * q = \
- vl_api_client_index_to_input_queue (mp->client_index); \
- if (!q) \
- return; \
- \
- rmp = vl_msg_api_alloc (sizeof (*rmp)); \
- rmp->_vl_msg_id = htons ((t)+mm->msg_id_base); \
- rmp->context = mp->context; \
- rmp->retval = htonl (rv); \
- do {body;} while (0); \
- vl_msg_api_send_shmem (q, (u8 *)&rmp); \
-} while(0);
+#define REPLY_MSG_ID_BASE mm->msg_id_base
+#include <vlibapi/api_helper_macros.h>
#define foreach_memif_plugin_api_msg \
_(MEMIF_SOCKET_FILENAME_ADD_DEL, memif_socket_filename_add_del) \
if (len > 0)
{
vec_validate (socket_filename, len);
- strncpy ((char *) socket_filename, (char *) mp->socket_filename, len);
+ memcpy (socket_filename, mp->socket_filename, len);
}
rv = memif_socket_filename_add_del (is_add, socket_id, socket_filename);
vec_free (args.secret);
reply:
- REPLY_MACRO (VL_API_MEMIF_CREATE_REPLY);
+ /* *INDENT-OFF* */
+ REPLY_MACRO2 (VL_API_MEMIF_CREATE_REPLY,
+ ({
+ rmp->sw_if_index = htonl (args.sw_if_index);
+ }));
+ /* *INDENT-ON* */
}
/**
hwif = vnet_get_sup_hw_interface (vnm, swif->sw_if_index);
mp = vl_msg_api_alloc (sizeof (*mp));
- memset (mp, 0, sizeof (*mp));
+ clib_memset (mp, 0, sizeof (*mp));
mp->_vl_msg_id = htons (VL_API_MEMIF_DETAILS + mm->msg_id_base);
mp->context = context;
memif_main_t *mm = &memif_main;
mp = vl_msg_api_alloc (sizeof (*mp));
- memset (mp, 0, sizeof (*mp));
+ clib_memset (mp, 0, sizeof (*mp));
mp->_vl_msg_id = htons (VL_API_MEMIF_SOCKET_FILENAME_DETAILS
+ mm->msg_id_base);