summaryrefslogtreecommitdiffstats
path: root/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
diff options
context:
space:
mode:
authorHanoh Haim <hhaim@cisco.com>2016-09-13 13:08:10 +0300
committerHanoh Haim <hhaim@cisco.com>2016-09-13 19:37:29 +0300
commitd510a8b0bbd930f062e2a8b03fad842e9905c259 (patch)
tree82ceee0004de8d6dc9100c8d68eb448b67cc8154 /src/rpc-server/commands/trex_rpc_cmd_stream.cpp
parent5defb8688cbd2dfda774ba1affff8392d7507429 (diff)
add min/max to repeatable random inst
Diffstat (limited to 'src/rpc-server/commands/trex_rpc_cmd_stream.cpp')
-rw-r--r--src/rpc-server/commands/trex_rpc_cmd_stream.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/rpc-server/commands/trex_rpc_cmd_stream.cpp b/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
index 88750277..f0577491 100644
--- a/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
+++ b/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
@@ -251,6 +251,28 @@ TrexRpcCmdAddStream::parse_vm_instr_tuple_flow_var(const Json::Value &inst, std:
));
}
+void
+TrexRpcCmdAddStream::parse_vm_instr_flow_var_rand_limit(const Json::Value &inst, std::unique_ptr<TrexStream> &stream, Json::Value &result) {
+ std::string flow_var_name = parse_string(inst, "name", result);
+
+ auto sizes = {1, 2, 4, 8};
+ uint8_t flow_var_size = parse_choice(inst, "size", sizes, result);
+ uint64_t seed = parse_uint64(inst, "seed", result);
+ uint64_t limit = parse_uint64(inst, "limit", result);
+
+ if (limit < 1 ) {
+ std::stringstream ss;
+ ss << "VM: request random flow var variable with limit of zero '";
+ generate_parse_err(result, ss.str());
+ }
+
+ stream->m_vm.add_instruction(new StreamVmInstructionFlowRandLimit(flow_var_name,
+ flow_var_size,
+ (int)limit,
+ 0,0,
+ seed)
+ );
+}
void
TrexRpcCmdAddStream::parse_vm_instr_flow_var(const Json::Value &inst, std::unique_ptr<TrexStream> &stream, Json::Value &result) {
@@ -373,6 +395,9 @@ TrexRpcCmdAddStream::parse_vm(const Json::Value &vm, std::unique_ptr<TrexStream>
} else if (vm_type == "flow_var") {
parse_vm_instr_flow_var(inst, stream, result);
+ } else if (vm_type == "flow_var_rand_limit") {
+ parse_vm_instr_flow_var(inst, stream, result);
+
} else if (vm_type == "write_flow_var") {
parse_vm_instr_write_flow_var(inst, stream, result);