diff --git a/src/vlibapi/vat_helper_macros.h b/src/vlibapi/vat_helper_macros.h
index 0abfa73..239e209 100644
--- a/src/vlibapi/vat_helper_macros.h
+++ b/src/vlibapi/vat_helper_macros.h
@@ -28,9 +28,9 @@
       mp = vl_socket_client_msg_alloc (sizeof(*mp));		\
     else                                                        \
       mp = vl_msg_api_alloc_as_if_client(sizeof(*mp));          \
-    clib_memset (mp, 0, sizeof (*mp));                               \
+    clib_memset (mp, 0, sizeof (*mp));                          \
     mp->_vl_msg_id = ntohs (VL_API_##T+__plugin_msg_base);      \
-    mp->client_index = vam->my_client_index;                    \
+    mp->client_index = vam->my_client_index;			\
 } while(0);
 
 /* MPING: construct a control-ping message, don't send it yet */
@@ -38,35 +38,35 @@
 do {                                                            \
     socket_client_main_t *scm = vam->socket_client_main;	\
     vam->result_ready = 0;                                      \
-    if (scm && scm->socket_enable)                                     \
+    if (scm && scm->socket_enable)                              \
       mp = vl_socket_client_msg_alloc (sizeof(*mp));		\
     else                                                        \
       mp = vl_msg_api_alloc_as_if_client(sizeof(*mp));          \
-    clib_memset (mp, 0, sizeof (*mp));                               \
+    clib_memset (mp, 0, sizeof (*mp));                          \
     mp->_vl_msg_id = ntohs (VL_API_##T+__plugin_msg_base);      \
     mp->client_index = vam->my_client_index;                    \
     if (scm)							\
-      scm->control_pings_outstanding++;                        	\
+      scm->control_pings_outstanding++;				\
 } while(0);
 
 #define M2(T, mp, n)                                            \
 do {                                                            \
     socket_client_main_t *scm = vam->socket_client_main;	\
     vam->result_ready = 0;                                      \
-    if (scm && scm->socket_enable)                                     \
-      mp = vl_socket_client_msg_alloc (sizeof(*mp));		\
+    if (scm && scm->socket_enable)                              \
+      mp = vl_socket_client_msg_alloc (sizeof(*mp) + n);        \
     else                                                        \
       mp = vl_msg_api_alloc_as_if_client(sizeof(*mp) + n);      \
-    clib_memset (mp, 0, sizeof (*mp));                               \
+    clib_memset (mp, 0, sizeof (*mp));                          \
     mp->_vl_msg_id = ntohs (VL_API_##T+__plugin_msg_base);      \
-    mp->client_index = vam->my_client_index;                    \
+    mp->client_index = vam->my_client_index;			\
 } while(0);
 
 /* S: send a message */
 #define S(mp)                                                   \
 do {                                                            \
   socket_client_main_t *scm = vam->socket_client_main;         	\
-  if (scm && scm->socket_enable)                                       \
+  if (scm && scm->socket_enable)                                \
     vl_socket_client_write ();					\
   else                                                          \
     vl_msg_api_send_shmem (vam->vl_input_queue, (u8 *)&mp);     \
@@ -79,7 +79,7 @@
     socket_client_main_t *scm = vam->socket_client_main;	\
     ret = -99;                                                  \
                                                                 \
-    if (scm && scm->socket_enable)					\
+    if (scm && scm->socket_enable)                              \
       vl_socket_client_read (5);                       		\
     while (vat_time_now (vam) < timeout) {                      \
         if (vam->result_ready == 1) {                           \
@@ -87,17 +87,17 @@
             break;                                              \
         }                                                       \
         vat_suspend (vam->vlib_main, 1e-5);                     \
-    }                                                           \
+    }								\
 } while(0);
 
-/* W2: wait for results, with timeout */
+/* W2: wait for results, with timeout */                        \
 #define W2(ret, body)                                           \
 do {                                                            \
     f64 timeout = vat_time_now (vam) + 1.0;                     \
     socket_client_main_t *scm = vam->socket_client_main;	\
     ret = -99;                                                  \
                                                                 \
-    if (scm && scm->socket_enable)					\
+    if (scm && scm->socket_enable)                              \
       vl_socket_client_read (5);                       		\
     while (vat_time_now (vam) < timeout) {                      \
         if (vam->result_ready == 1) {                           \
@@ -106,7 +106,7 @@
           break;                                                \
         }                                                       \
         vat_suspend (vam->vlib_main, 1e-5);                     \
-    }                                                           \
+    }								\
 } while(0);
 
 #define VAT_PLUGIN_REGISTER(plug)                               \
