summaryrefslogtreecommitdiffstats
path: root/scripts/stl/pcap_with_vm.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/stl/pcap_with_vm.py')
-rw-r--r--scripts/stl/pcap_with_vm.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/scripts/stl/pcap_with_vm.py b/scripts/stl/pcap_with_vm.py
new file mode 100644
index 00000000..4e85bdf4
--- /dev/null
+++ b/scripts/stl/pcap_with_vm.py
@@ -0,0 +1,57 @@
+import os
+from trex_stl_lib.api import *
+
+# PCAP profile
+class STLPcap(object):
+
+ def __init__ (self, pcap_file):
+ self.pcap_file = pcap_file
+
+ def create_vm (self, ip_src_range, ip_dst_range):
+ if not ip_src_range and not ip_dst_range:
+ return None
+
+ vm = []
+
+ if ip_src_range:
+ vm += [STLVmFlowVar(name="src", min_value = ip_src_range['start'], max_value = ip_src_range['end'], size = 4, op = "inc"),
+ STLVmWrFlowVar(fv_name="src",pkt_offset= "IP.src")
+ ]
+
+ if ip_dst_range:
+ vm += [STLVmFlowVar(name="dst", min_value = ip_dst_range['start'], max_value = ip_dst_range['end'], size = 4, op = "inc"),
+ STLVmWrFlowVar(fv_name="dst",pkt_offset = 30)
+ ]
+
+ vm += [STLVmFixIpv4(offset = "IP")
+ ]
+
+ return vm
+
+
+ def get_streams (self,
+ direction = 0,
+ ipg_usec = 10.0,
+ loop_count = 5,
+ ip_src_range = None,
+ ip_dst_range = {'start' : '16.0.0.1', 'end': '16.0.0.254'},
+ **kwargs):
+
+ vm = self.create_vm(ip_src_range, ip_dst_range)
+
+ profile = STLProfile.load_pcap(self.pcap_file,
+ ipg_usec = ipg_usec,
+ loop_count = loop_count,
+ vm = vm)
+
+ return profile.get_streams()
+
+
+
+# dynamic load - used for trex console or simulator
+def register():
+ # get file relative to profile dir
+ return STLPcap(os.path.join(os.path.dirname(__file__), 'sample.pcap'))
+
+
+