diff options
author | Florin Coras <fcoras@cisco.com> | 2020-07-28 19:20:40 -0700 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2020-07-31 19:34:20 +0000 |
commit | e6c3e8f0ee47799c76bdca362c4d75af62aacac3 (patch) | |
tree | 4a5bbbbb17f3aae3fe7be1a92c0ad147115ee8ff /src/plugins/nsim/nsim_test.c | |
parent | b2f44bd8e7d226d851d4d05981914e642a4da571 (diff) |
nsim: basic reorder support
Reorder delayed packets, i.e., flush instead of delay, with a configured
rate.
Type: feature
Change-Id: Ib1294f5f1c9b6e98a12b1bb0be655e54facfed3a
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/plugins/nsim/nsim_test.c')
-rw-r--r-- | src/plugins/nsim/nsim_test.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/plugins/nsim/nsim_test.c b/src/plugins/nsim/nsim_test.c index b155c923f87..68426d0b569 100644 --- a/src/plugins/nsim/nsim_test.c +++ b/src/plugins/nsim/nsim_test.c @@ -214,6 +214,58 @@ api_nsim_configure (vat_main_t * vam) return ret; } +static int +api_nsim_configure2 (vat_main_t * vam) +{ + vl_api_nsim_configure2_t *mp; + unformat_input_t *i = vam->input; + f64 delay = 0.0, bandwidth = 0.0; + f64 packet_size = 1500.0; + u32 packets_per_drop = 0, packets_per_reorder; + int ret; + + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + { + if (unformat (i, "delay %U", unformat_delay, &delay)) + ; + else if (unformat (i, "bandwidth %U", unformat_bandwidth, &bandwidth)) + ; + else if (unformat (i, "packet-size %f", &packet_size)) + ; + else if (unformat (i, "packets-per-drop %u", &packets_per_drop)) + ; + else if (unformat (i, "packets-per-reorder %u", &packets_per_reorder)) + ; + else + break; + } + + if (delay == 0.0 || bandwidth == 0.0) + { + errmsg ("must specify delay and bandwidth"); + return -99; + } + + /* Construct the API message */ + M (NSIM_CONFIGURE2, mp); + mp->delay_in_usec = (u32) (delay * 1e6); + mp->delay_in_usec = ntohl (mp->delay_in_usec); + mp->average_packet_size = (u32) (packet_size); + mp->average_packet_size = ntohl (mp->average_packet_size); + 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); + mp->packets_per_reorder = ntohl (packets_per_reorder); + + /* send it... */ + S (mp); + + /* Wait for a reply... */ + W (ret); + return ret; +} + #include <nsim/nsim.api_test.c> /* |