add --pkt to stl-sim
authorHanoh Haim <[email protected]>
Tue, 1 Mar 2016 11:49:56 +0000 (13:49 +0200)
committerHanoh Haim <[email protected]>
Tue, 1 Mar 2016 11:49:56 +0000 (13:49 +0200)
scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py
scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_sim.py
scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py
scripts/stl/udp_1pkt_simple.py
scripts/stl/udp_1pkt_vxlan.py

index e27563e..42d648a 100644 (file)
@@ -814,6 +814,19 @@ class CScapyTRexPktBuilder(CTrexPktBuilderInterface):
         if not was_set :
             raise CTRexPacketBuildException(-14, "no buffer inside the pcap file {0}".format(f_path))
 
+    def to_pkt_dump(self):
+        p = self.pkt
+        if p and isinstance(p, Packet):
+            p.show2();
+            hexdump(p);
+            return;
+        p = self.pkt_raw;
+        if p:
+            scapy_pkt = Ether(p);
+            scapy_pkt.show2();
+            hexdump(p);
+
+
     def set_packet (self, pkt):
         """
         Scapy packet   Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025)/IP()/"A"*10
index 54d699d..9db3473 100644 (file)
@@ -123,7 +123,7 @@ class STLSim(object):
              duration = -1,
              mode = 'none'):
 
-        if not mode in ['none', 'gdb', 'valgrind', 'json', 'yaml']:
+        if not mode in ['none', 'gdb', 'valgrind', 'json', 'yaml','pkt']:
             raise STLArgumentError('mode', mode)
 
         # listify
@@ -208,6 +208,10 @@ class STLSim(object):
         elif mode == 'yaml':
             print STLProfile(stream_list).dump_to_yaml()
             return
+        elif mode == 'pkt':
+            print STLProfile(stream_list).dump_as_pkt();
+            return
+
 
         # start simulation
         self.outfile = outfile
@@ -392,6 +396,11 @@ def setParserOptions():
                        action = "store_true",
                        default = False)
 
+    group.add_argument("--pkt",
+                       help = "Parse the packet and show it as hex",
+                       action = "store_true",
+                       default = False)
+
     group.add_argument("--yaml",
                        help = "generate YAML from input file [default is False]",
                        action = "store_true",
@@ -427,6 +436,8 @@ def main ():
         mode = 'json'
     elif options.yaml:
         mode = 'yaml'
+    elif options.pkt:
+        mode = 'pkt'
     else:
         mode = 'none'
 
index 7964992..24acd28 100644 (file)
@@ -224,6 +224,7 @@ class STLStream(object):
         if not packet:
             packet = CScapyTRexPktBuilder(pkt = Ether()/IP())
 
+        self.scapy_pkt_builder = packet
         # packet builder
         packet.compile()
 
@@ -299,6 +300,14 @@ class STLStream(object):
     def get_rate (self):
         return self.get_rate_from_field(self.fields['mode']['rate'])
 
+    def to_pkt_dump (self):
+        scapy_b = self.scapy_pkt_builder;
+        if scapy_b and isinstance(scapy_b,CScapyTRexPktBuilder):
+            scapy_b.to_pkt_dump()
+        else:
+            print "Nothing to dump"
+
+
 
     def to_yaml (self):
         y = {}
@@ -598,6 +607,12 @@ class STLProfile(object):
 
         return profile
 
+    def dump_as_pkt (self):
+        cnt=0;
+        for stream in self.streams:
+            print "Stream %d" % cnt
+            cnt = cnt +1 
+            stream.to_pkt_dump()
 
     def dump_to_yaml (self, yaml_file = None):
         yaml_list = [stream.to_yaml() for stream in self.streams]
index 2a2c883..09643fe 100644 (file)
@@ -3,8 +3,13 @@ from trex_stl_lib.api import *
 class STLS1(object):
 
     def create_stream (self):
-        return STLStream( packet = STLPktBuilder(pkt = Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025)/(10*'x')),
-                          mode = STLTXCont())
+        return STLStream( 
+            packet = 
+                    STLPktBuilder(
+                        pkt = Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/
+                                UDP(dport=12,sport=1025)/(10*'x')
+                    ),
+             mode = STLTXCont())
 
     def get_streams (self, direction = 0):
         # create 1 stream 
index 3cb3dfb..9d56fe3 100644 (file)
@@ -30,7 +30,8 @@ class STLS1(object):
 
     def create_stream (self):
         pkt =  Ether()/IP()/UDP(sport=1337,dport=4789)/VXLAN(vni=42)/Ether()/IP()/('x'*20)
-        pkt.show2()
+        #pkt.show2()
+        #hexdump(pkt)
 
         # burst of 17 packets
         return STLStream(packet = STLPktBuilder(pkt = pkt ,vm = []),