X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fnsim%2Fnsim_test.c;h=b155c923f877e9dfe754db451da64e582744afc9;hb=2e7a43ca4;hp=0e2a26af55b6d75b9a9dc6f5e53d7b06eda4dd5f;hpb=9e3252b5cec76dddb9877e593c799ebe15cae0af;p=vpp.git diff --git a/src/plugins/nsim/nsim_test.c b/src/plugins/nsim/nsim_test.c index 0e2a26af55b..b155c923f87 100644 --- a/src/plugins/nsim/nsim_test.c +++ b/src/plugins/nsim/nsim_test.c @@ -22,30 +22,8 @@ uword unformat_sw_if_index (unformat_input_t * input, va_list * args); /* Declare message IDs */ -#include - -/* define message structures */ -#define vl_typedefs -#include -#undef vl_typedefs - -/* declare message handlers for each api */ - -#define vl_endianfun /* define message structures */ -#include -#undef vl_endianfun - -/* instantiate all the print functions we know about */ -#define vl_print(handle, ...) -#define vl_printfun -#include -#undef vl_printfun - -/* Get the API version number. */ -#define vl_api_version(n,v) static u32 api_version=(v); -#include -#undef vl_api_version - +#include +#include typedef struct { @@ -59,43 +37,15 @@ nsim_test_main_t nsim_test_main; #define __plugin_msg_base nsim_test_main.msg_id_base #include -#define foreach_standard_reply_retval_handler \ -_(nsim_enable_disable_reply) \ -_(nsim_configure_reply) - -#define _(n) \ - static void vl_api_##n##_t_handler \ - (vl_api_##n##_t * mp) \ - { \ - vat_main_t * vam = nsim_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 \ -_(NSIM_ENABLE_DISABLE_REPLY, nsim_enable_disable_reply) \ -_(NSIM_CONFIGURE_REPLY, nsim_configure_reply) - static int -api_nsim_enable_disable (vat_main_t * vam) +api_nsim_cross_connect_enable_disable (vat_main_t * vam) { unformat_input_t *i = vam->input; int enable_disable = 1; u32 sw_if_index0 = ~0; u32 sw_if_index1 = ~0; u32 tmp; - vl_api_nsim_enable_disable_t *mp; + vl_api_nsim_cross_connect_enable_disable_t *mp; int ret; /* Parse args required to build the message */ @@ -128,7 +78,7 @@ api_nsim_enable_disable (vat_main_t * vam) } /* Construct the API message */ - M (NSIM_ENABLE_DISABLE, mp); + M (NSIM_CROSS_CONNECT_ENABLE_DISABLE, mp); mp->sw_if_index0 = ntohl (sw_if_index0); mp->sw_if_index1 = ntohl (sw_if_index1); mp->enable_disable = enable_disable; @@ -141,6 +91,47 @@ api_nsim_enable_disable (vat_main_t * vam) return ret; } +static int +api_nsim_output_feature_enable_disable (vat_main_t * vam) +{ + unformat_input_t *i = vam->input; + int enable_disable = 1; + u32 sw_if_index = ~0; + vl_api_nsim_output_feature_enable_disable_t *mp; + int ret; + + /* Parse args required to build the message */ + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "%U", unformat_sw_if_index, vam, &sw_if_index)) + ; + else if (unformat (i, "sw_if_index %d", &sw_if_index)) + ; + else if (unformat (i, "disable")) + enable_disable = 0; + else + break; + } + + if (sw_if_index == ~0) + { + errmsg ("missing interface name / explicit sw_if_index number \n"); + return -99; + } + + /* Construct the API message */ + M (NSIM_OUTPUT_FEATURE_ENABLE_DISABLE, mp); + mp->sw_if_index = ntohl (sw_if_index); + mp->enable_disable = enable_disable; + + /* send it... */ + S (mp); + + /* Wait for a reply... */ + W (ret); + return ret; +} + static uword unformat_delay (unformat_input_t * input, va_list * args) { @@ -181,7 +172,7 @@ api_nsim_configure (vat_main_t * vam) unformat_input_t *i = vam->input; f64 delay = 0.0, bandwidth = 0.0; f64 packet_size = 1500.0; - u32 num_workers = vlib_num_workers (); + u32 packets_per_drop = 0; int ret; while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) @@ -192,6 +183,8 @@ api_nsim_configure (vat_main_t * vam) ; else if (unformat (i, "packet-size %f", &packet_size)) ; + else if (unformat (i, "packets-per-drop %u", &packets_per_drop)) + ; else break; } @@ -211,6 +204,7 @@ api_nsim_configure (vat_main_t * vam) mp->bandwidth_in_bits_per_second = (u64) (bandwidth); mp->bandwidth_in_bits_per_second = clib_host_to_net_u64 (mp->bandwidth_in_bits_per_second); + mp->packets_per_drop = ntohl (packets_per_drop); /* send it... */ S (mp); @@ -220,61 +214,7 @@ api_nsim_configure (vat_main_t * vam) return ret; } -/* - * List of messages that the api test plugin sends, - * and that the data plane plugin processes - */ -#define foreach_vpe_api_msg \ -_(nsim_enable_disable, \ -"[ | sw_if_index ] [ | sw_if_index ] [disable]") \ -_(nsim_configure, "delay