diff options
author | Florin Coras <fcoras@cisco.com> | 2017-12-19 04:50:01 -0800 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2018-01-05 19:00:45 +0000 |
commit | 90a63988fa01685626b6d6a01b79ea5370f7fbac (patch) | |
tree | 69951111b8f8c43c5dbfc61cc5b133f74a58ddda /src/vlibapi/vat_helper_macros.h | |
parent | e6bfeab1c352ae73a19361c038e2a06a58c035db (diff) |
sock api: add infra for bootstrapping shm clients
- add function to sock client that bootstraps shm api
- allow sock clients to request custom shm ring configs
Change-Id: Iabc1dd4f0dc8bbf8ba24de37f4966339fcf86107
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vlibapi/vat_helper_macros.h')
-rw-r--r-- | src/vlibapi/vat_helper_macros.h | 64 |
1 files changed, 20 insertions, 44 deletions
diff --git a/src/vlibapi/vat_helper_macros.h b/src/vlibapi/vat_helper_macros.h index fd2e563512f..52fdcb1cb5a 100644 --- a/src/vlibapi/vat_helper_macros.h +++ b/src/vlibapi/vat_helper_macros.h @@ -22,13 +22,10 @@ /* M: construct, but don't yet send a message */ #define M(T, mp) \ do { \ - socket_client_main_t *scm = &vam->socket_client_main; \ + socket_client_main_t *scm = vam->socket_client_main; \ vam->result_ready = 0; \ - if (scm->socket_enable) \ - { \ - mp = (void *)scm->socket_tx_buffer; \ - scm->socket_tx_nbytes = sizeof (*mp); \ - } \ + if (scm && scm->socket_enable) \ + mp = vl_socket_client_msg_alloc (sizeof(*mp)); \ else \ mp = vl_msg_api_alloc_as_if_client(sizeof(*mp)); \ memset (mp, 0, sizeof (*mp)); \ @@ -39,30 +36,25 @@ do { \ /* MPING: construct a control-ping message, don't send it yet */ #define MPING(T, mp) \ do { \ - socket_client_main_t *scm = &vam->socket_client_main; \ + socket_client_main_t *scm = vam->socket_client_main; \ vam->result_ready = 0; \ - if (scm->socket_enable) \ - { \ - mp = (void *)scm->socket_tx_buffer; \ - scm->socket_tx_nbytes = sizeof (*mp); \ - } \ + if (scm && scm->socket_enable) \ + mp = vl_socket_client_msg_alloc (sizeof(*mp)); \ else \ mp = vl_msg_api_alloc_as_if_client(sizeof(*mp)); \ memset (mp, 0, sizeof (*mp)); \ mp->_vl_msg_id = ntohs (VL_API_##T+__plugin_msg_base); \ mp->client_index = vam->my_client_index; \ - scm->control_pings_outstanding++; \ + if (scm) \ + scm->control_pings_outstanding++; \ } while(0); #define M2(T, mp, n) \ do { \ - socket_client_main_t *scm = &vam->socket_client_main; \ + socket_client_main_t *scm = vam->socket_client_main; \ vam->result_ready = 0; \ - if (scm->socket_enable) \ - { \ - mp = (void *)scm->socket_tx_buffer; \ - scm->socket_tx_nbytes = sizeof (*mp) + n; \ - } \ + if (scm && scm->socket_enable) \ + mp = vl_socket_client_msg_alloc (sizeof(*mp)); \ else \ mp = vl_msg_api_alloc_as_if_client(sizeof(*mp) + n); \ memset (mp, 0, sizeof (*mp)); \ @@ -73,27 +65,9 @@ do { \ /* S: send a message */ #define S(mp) \ do { \ - int n; \ - socket_client_main_t *scm = &vam->socket_client_main; \ - if (scm->socket_enable) \ - { \ - msgbuf_t msgbuf = \ - { \ - .q = 0, \ - .gc_mark_timestamp = 0, \ - .data_len = htonl(scm->socket_tx_nbytes), \ - }; \ - \ - /* coverity[UNINIT] */ \ - n = write (scm->socket_fd, &msgbuf, sizeof (msgbuf)); \ - if (n < sizeof (msgbuf)) \ - clib_unix_warning ("socket write (msgbuf)"); \ - \ - n = write (scm->socket_fd, scm->socket_tx_buffer, \ - scm->socket_tx_nbytes); \ - if (n < scm->socket_tx_nbytes) \ - clib_unix_warning ("socket write (msg)"); \ - } \ + socket_client_main_t *scm = vam->socket_client_main; \ + if (scm && scm->socket_enable) \ + vl_socket_client_write (); \ else \ vl_msg_api_send_shmem (vam->vl_input_queue, (u8 *)&mp); \ } while (0); @@ -102,10 +76,11 @@ do { \ #define W(ret) \ do { \ f64 timeout = vat_time_now (vam) + 1.0; \ - socket_client_main_t *scm = &vam->socket_client_main; \ + socket_client_main_t *scm = vam->socket_client_main; \ ret = -99; \ \ - vl_socket_client_read_reply (scm); \ + if (scm && scm->socket_enable) \ + vl_socket_client_read (5); \ while (vat_time_now (vam) < timeout) { \ if (vam->result_ready == 1) { \ ret = vam->retval; \ @@ -119,10 +94,11 @@ do { \ #define W2(ret, body) \ do { \ f64 timeout = vat_time_now (vam) + 1.0; \ - socket_client_main_t *scm = &vam->socket_client_main; \ + socket_client_main_t *scm = vam->socket_client_main; \ ret = -99; \ \ - vl_socket_client_read_reply (scm); \ + if (scm && scm->socket_enable) \ + vl_socket_client_read (5); \ while (vat_time_now (vam) < timeout) { \ if (vam->result_ready == 1) { \ (body); \ |