summaryrefslogtreecommitdiffstats
path: root/src/rpc-server
diff options
context:
space:
mode:
Diffstat (limited to 'src/rpc-server')
-rw-r--r--src/rpc-server/commands/trex_rpc_cmd_general.cpp3
-rw-r--r--src/rpc-server/commands/trex_rpc_cmd_stream.cpp2
-rw-r--r--src/rpc-server/commands/trex_rpc_cmds.h2
-rw-r--r--src/rpc-server/trex_rpc_cmd.cpp12
4 files changed, 16 insertions, 3 deletions
diff --git a/src/rpc-server/commands/trex_rpc_cmd_general.cpp b/src/rpc-server/commands/trex_rpc_cmd_general.cpp
index a2d4c284..a701f6db 100644
--- a/src/rpc-server/commands/trex_rpc_cmd_general.cpp
+++ b/src/rpc-server/commands/trex_rpc_cmd_general.cpp
@@ -236,12 +236,13 @@ TrexRpcCmdAcquire::_run(const Json::Value &params, Json::Value &result) {
const string &new_owner = parse_string(params, "user", result);
bool force = parse_bool(params, "force", result);
+ uint32_t session_id = parse_uint32(params, "session_id", result);
/* if not free and not you and not force - fail */
TrexStatelessPort *port = get_stateless_obj()->get_port_by_id(port_id);
try {
- port->acquire(new_owner, force);
+ port->acquire(new_owner, session_id, force);
} catch (const TrexRpcException &ex) {
generate_execute_err(result, ex.what());
}
diff --git a/src/rpc-server/commands/trex_rpc_cmd_stream.cpp b/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
index 8b285c06..a1c3bb99 100644
--- a/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
+++ b/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
@@ -227,7 +227,7 @@ void
TrexRpcCmdAddStream::parse_vm(const Json::Value &vm, TrexStream *stream, Json::Value &result) {
/* array of VM instructions on vm */
for (int i = 0; i < vm.size(); i++) {
- const Json::Value & inst = vm[i];
+ const Json::Value & inst = parse_object(vm, i, result);
auto vm_types = {"fix_checksum_ipv4", "flow_var", "write_flow_var"};
std::string vm_type = parse_choice(inst, "type", vm_types, result);
diff --git a/src/rpc-server/commands/trex_rpc_cmds.h b/src/rpc-server/commands/trex_rpc_cmds.h
index c22ef390..b9be1fbe 100644
--- a/src/rpc-server/commands/trex_rpc_cmds.h
+++ b/src/rpc-server/commands/trex_rpc_cmds.h
@@ -70,7 +70,7 @@ void get_hostname(std::string &hostname);
* ownership
*/
TREX_RPC_CMD_DEFINE(TrexRpcCmdGetOwner, "get_owner", 1, false);
-TREX_RPC_CMD_DEFINE(TrexRpcCmdAcquire, "acquire", 3, false);
+TREX_RPC_CMD_DEFINE(TrexRpcCmdAcquire, "acquire", 4, false);
TREX_RPC_CMD_DEFINE(TrexRpcCmdRelease, "release", 1, true);
diff --git a/src/rpc-server/trex_rpc_cmd.cpp b/src/rpc-server/trex_rpc_cmd.cpp
index fb31fa9d..b5dd121c 100644
--- a/src/rpc-server/trex_rpc_cmd.cpp
+++ b/src/rpc-server/trex_rpc_cmd.cpp
@@ -217,12 +217,24 @@ TrexRpcCommand::parse_string(const Json::Value &parent, const std::string &name,
return parent[name].asString();
}
+/**
+ * object version
+ */
const Json::Value &
TrexRpcCommand::parse_object(const Json::Value &parent, const std::string &name, Json::Value &result) {
check_field_type(parent, name, FIELD_TYPE_OBJ, result);
return parent[name];
}
+/**
+ * index version
+ */
+const Json::Value &
+TrexRpcCommand::parse_object(const Json::Value &parent, int index, Json::Value &result) {
+ check_field_type(parent, index, FIELD_TYPE_OBJ, result);
+ return parent[index];
+}
+
const Json::Value &
TrexRpcCommand::parse_array(const Json::Value &parent, const std::string &name, Json::Value &result) {
check_field_type(parent, name, FIELD_TYPE_ARRAY, result);