summaryrefslogtreecommitdiffstats
path: root/src/stateless/cp/trex_stream_vm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/stateless/cp/trex_stream_vm.cpp')
-rw-r--r--src/stateless/cp/trex_stream_vm.cpp60
1 files changed, 28 insertions, 32 deletions
diff --git a/src/stateless/cp/trex_stream_vm.cpp b/src/stateless/cp/trex_stream_vm.cpp
index 106b5ea3..c157ab06 100644
--- a/src/stateless/cp/trex_stream_vm.cpp
+++ b/src/stateless/cp/trex_stream_vm.cpp
@@ -133,30 +133,27 @@ void StreamVmInstructionFlowMan::sanity_check_valid_range(uint32_t ins_id,Stream
-uint8_t StreamVmInstructionFlowMan::bss_init_value(uint8_t *p){
- uint8_t res;
+uint8_t StreamVmInstructionFlowMan::set_bss_init_value(uint8_t *p) {
+
+ uint64_t prev = peek_prev();
switch (m_size_bytes) {
case 1:
- *p=(uint8_t)get_bss_init_value();
- res=1;
- break;
+ *p=(uint8_t)prev;
+ return 1;
case 2:
- *((uint16_t*)p)=(uint16_t)get_bss_init_value();
- res=2;
- break;
+ *((uint16_t*)p)=(uint16_t)prev;
+ return 2;
case 4:
- *((uint32_t*)p)=(uint32_t)get_bss_init_value();
- res=4;
- break;
+ *((uint32_t*)p)=(uint32_t)prev;
+ return 4;
case 8:
- *((uint64_t*)p)=(uint64_t)get_bss_init_value();
- res=8;
- break;
+ *((uint64_t*)p)=(uint64_t)prev;
+ return 8;
default:
assert(0);
+ return(0);
}
- return(res);
}
@@ -179,7 +176,7 @@ void StreamVmInstructionFlowRandLimit::sanity_check(uint32_t ins_id,StreamVm *lp
}
-uint8_t StreamVmInstructionFlowRandLimit::bss_init_value(uint8_t *p){
+uint8_t StreamVmInstructionFlowRandLimit::set_bss_init_value(uint8_t *p){
uint8_t res;
typedef union ua_ {
@@ -305,26 +302,25 @@ void StreamVmInstructionFlowClient::Dump(FILE *fd){
}
-uint8_t StreamVmInstructionFlowClient::bss_init_value(uint8_t *p){
+uint8_t StreamVmInstructionFlowClient::set_bss_init_value(uint8_t *p) {
- if (m_client_min>0) {
- *((uint32_t*)p)=(uint32_t)(m_client_min-1);
- }else{
- *((uint32_t*)p)=(uint32_t)m_client_min;
- }
+ uint32_t bss_ip;
+ uint16_t bss_port;
- p+=4;
+ /* fetch the previous values by 1 */
+ peek_prev(bss_ip, bss_port, 1);
- if (is_unlimited_flows() ) {
- *((uint16_t*)p)=StreamDPOpClientsUnLimit::CLIENT_UNLIMITED_MIN_PORT;
- }else{
- *((uint16_t*)p)=(uint16_t)m_port_min;
- }
+ /* ip */
+ *((uint32_t*)p) = bss_ip;
+ p += 4;
- p+=2;
+ /* port */
+ *((uint16_t*)p) = bss_port;
+ p += 2;
- *((uint32_t*)p)=0;
- p+=4;
+ /* reserve */
+ *((uint32_t*)p) = 0;
+ p += 4;
return (get_flow_var_size());
}
@@ -1057,7 +1053,7 @@ void StreamVm::build_bss() {
}
for (auto inst : m_inst_list) {
- p+=inst->bss_init_value(p);
+ p+=inst->set_bss_init_value(p);
}
}