profiles for PCAPs
authorimarom <[email protected]>
Thu, 18 Feb 2016 11:15:53 +0000 (06:15 -0500)
committerimarom <[email protected]>
Thu, 18 Feb 2016 11:15:53 +0000 (06:15 -0500)
scripts/stl/pcap.py [new file with mode: 0644]
scripts/stl/pcap_with_vm.py [new file with mode: 0644]
scripts/stl/sample.pcap [new file with mode: 0644]

diff --git a/scripts/stl/pcap.py b/scripts/stl/pcap.py
new file mode 100644 (file)
index 0000000..d4b88a5
--- /dev/null
@@ -0,0 +1,26 @@
+import os
+from trex_stl_lib.api import *
+
+# PCAP profile
+class STLPcap(object):
+
+    def __init__ (self, pcap_file):
+        self.pcap_file = pcap_file
+
+    def get_streams (self,
+                     ipg_usec = 10.0,
+                     loop_count = 1):
+
+        profile = STLProfile.load_pcap(self.pcap_file, ipg_usec = ipg_usec, loop_count = loop_count)
+
+        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'))
+
+
+
diff --git a/scripts/stl/pcap_with_vm.py b/scripts/stl/pcap_with_vm.py
new file mode 100644 (file)
index 0000000..7962d2b
--- /dev/null
@@ -0,0 +1,48 @@
+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 = [STLVmFixIpv4(offset = "IP")]
+
+        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= "IP.dst")
+                   ]
+
+        return vm
+
+
+    def get_streams (self,
+                     ipg_usec = 10.0,
+                     loop_count = 1,
+                     ip_src_range = None,
+                     ip_dst_range = {'start' : '10.0.0.1', 'end': '10.0.0.254'}):
+
+        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'))
+
+
+
diff --git a/scripts/stl/sample.pcap b/scripts/stl/sample.pcap
new file mode 100644 (file)
index 0000000..2cb9d89
Binary files /dev/null and b/scripts/stl/sample.pcap differ