X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fioam%2Fudp-ping%2Fudp_ping_test.c;h=84b878cffa79ed17ed20d3473b18c6cc86c4afc8;hb=refs%2Fchanges%2F80%2F23880%2F2;hp=d435b224476c47516ea1811372fcaecaa20c904e;hpb=668605fc873a6409f38df712106f4b1290d87648;p=vpp.git diff --git a/src/plugins/ioam/udp-ping/udp_ping_test.c b/src/plugins/ioam/udp-ping/udp_ping_test.c index d435b224476..84b878cffa7 100644 --- a/src/plugins/ioam/udp-ping/udp_ping_test.c +++ b/src/plugins/ioam/udp-ping/udp_ping_test.c @@ -24,20 +24,16 @@ #include #include +#include +#include + +#define __plugin_msg_base udp_ping_test_main.msg_id_base +#include /* Declare message IDs */ #include #include -#define vl_endianfun /* define message structures */ -#define vl_printfun -#define vl_print(handle, ...) -#define vl_api_version(n,v) static u32 api_version=(v); -#include -#undef vl_endianfun -#undef vl_printfun -#undef vl_api_version - typedef struct { /* API message ID base */ @@ -47,79 +43,21 @@ typedef struct udp_ping_test_main_t udp_ping_test_main; -#define foreach_standard_reply_retval_handler \ -_(udp_ping_add_del_reply) \ -_(udp_ping_export_reply) - -#define _(n) \ - static void vl_api_##n##_t_handler \ - (vl_api_##n##_t * mp) \ - { \ - vat_main_t * vam = udp_ping_test_main.vat_main; \ - i32 retval = ntohl(mp->retval); \ - if (vam->async_mode) { \ - vam->async_errors += (retval < 0); \ - } else { \ - vam->retval = retval; \ - vam->result_ready = 1; \ - } \ - } -foreach_standard_reply_retval_handler; -#undef _ - -/* - * Table of message reply handlers, must include boilerplate handlers - * we just generated - */ -#define foreach_vpe_api_reply_msg \ -_(UDP_PING_ADD_DEL_REPLY, udp_ping_add_del_reply) \ -_(UDP_PING_EXPORT_REPLY, udp_ping_export_reply) \ - - -/* M: construct, but don't yet send a message */ - -#define M(T,t) \ -do { \ - vam->result_ready = 0; \ - mp = vl_msg_api_alloc(sizeof(*mp)); \ - clib_memset (mp, 0, sizeof (*mp)); \ - mp->_vl_msg_id = ntohs (VL_API_##T + sm->msg_id_base); \ - mp->client_index = vam->my_client_index; \ -} while(0); - -/* S: send a message */ -#define S (vl_msg_api_send_shmem (vam->vl_input_queue, (u8 *)&mp)) - -/* W: wait for results, with timeout */ -#define W \ -do { \ - timeout = vat_time_now (vam) + 5.0; \ - \ - while (vat_time_now (vam) < timeout) { \ - if (vam->result_ready == 1) { \ - return (vam->retval); \ - } \ - } \ - return -99; \ -} while(0); - static int api_udp_ping_add_del (vat_main_t * vam) { - udp_ping_test_main_t *sm = &udp_ping_test_main; unformat_input_t *input = vam->input; vl_api_udp_ping_add_del_t *mp; int rv = 0; - ip6_address_t dst, src; + ip46_address_t dst, src; u32 start_src_port, end_src_port; u32 start_dst_port, end_dst_port; u32 interval; u8 is_disable = 0; - f64 timeout; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { - if (unformat (input, "src %U", unformat_ip6_address, &src)) + if (unformat (input, "src %U", unformat_ip46_address, &src)) ; else if (unformat (input, "start-src-port %d", &start_src_port)) ; @@ -129,7 +67,7 @@ api_udp_ping_add_del (vat_main_t * vam) ; else if (unformat (input, "end-dst-port %d", &end_dst_port)) ; - else if (unformat (input, "dst %U", unformat_ip6_address, &dst)) + else if (unformat (input, "dst %U", unformat_ip46_address, &dst)) ; else if (unformat (input, "interval %d", &interval)) ; @@ -139,20 +77,19 @@ api_udp_ping_add_del (vat_main_t * vam) break; } - M (UDP_PING_ADD_DEL, udp_ping_add); + M (UDP_PING_ADD_DEL, mp); - clib_memcpy (mp->src_ip_address, &src, 16); - clib_memcpy (mp->dst_ip_address, &dst, 16); + ip_address_encode (&src, IP46_TYPE_IP6, &mp->src_ip_address); + ip_address_encode (&dst, IP46_TYPE_IP6, &mp->dst_ip_address); mp->start_src_port = (u16) start_src_port; mp->end_src_port = (u16) end_src_port; mp->start_dst_port = (u16) start_dst_port; mp->end_dst_port = (u16) end_dst_port; mp->interval = (u16) interval; - mp->is_ipv4 = 0; mp->dis = is_disable; - S; - W; + S (mp); + W (rv); return (rv); } @@ -160,12 +97,10 @@ api_udp_ping_add_del (vat_main_t * vam) static int api_udp_ping_export (vat_main_t * vam) { - udp_ping_test_main_t *sm = &udp_ping_test_main; unformat_input_t *input = vam->input; vl_api_udp_ping_export_t *mp; int rv = 0; int is_add = 1; - f64 timeout; while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { @@ -177,75 +112,19 @@ api_udp_ping_export (vat_main_t * vam) break; } - M (UDP_PING_EXPORT, udp_ping_export); + M (UDP_PING_EXPORT, mp); mp->enable = is_add; - S; - W; + S (mp); + W (rv); return (rv); } -/* - * List of messages that the api test plugin sends, - * and that the data plane plugin processes - */ -#define foreach_vpe_api_msg \ -_(udp_ping_add_del, "src start-src-port "\ - "end-src-port " \ - "dst start-dst-port "\ - "end-dst-port "\ - "interval