diff options
Diffstat (limited to 'src/rpc-server')
-rw-r--r-- | src/rpc-server/commands/trex_rpc_cmd_stream.cpp | 25 | ||||
-rw-r--r-- | src/rpc-server/commands/trex_rpc_cmds.h | 2 |
2 files changed, 27 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); diff --git a/src/rpc-server/commands/trex_rpc_cmds.h b/src/rpc-server/commands/trex_rpc_cmds.h index 24b95227..94aa2a5b 100644 --- a/src/rpc-server/commands/trex_rpc_cmds.h +++ b/src/rpc-server/commands/trex_rpc_cmds.h @@ -105,6 +105,8 @@ void validate_stream(const std::unique_ptr<TrexStream> &stream, Json::Value &res void parse_vm(const Json::Value &vm, std::unique_ptr<TrexStream> &stream, Json::Value &result); void parse_vm_instr_checksum(const Json::Value &inst, std::unique_ptr<TrexStream> &stream, Json::Value &result); void parse_vm_instr_flow_var(const Json::Value &inst, std::unique_ptr<TrexStream> &stream, Json::Value &result); +void parse_vm_instr_flow_var_rand_limit(const Json::Value &inst, std::unique_ptr<TrexStream> &stream, Json::Value &result); + void parse_vm_instr_tuple_flow_var(const Json::Value &inst, std::unique_ptr<TrexStream> &stream, Json::Value &result); void parse_vm_instr_trim_pkt_size(const Json::Value &inst, std::unique_ptr<TrexStream> &stream, Json::Value &result); void parse_rate(const Json::Value &inst, std::unique_ptr<TrexStream> &stream, Json::Value &result); |