summaryrefslogtreecommitdiffstats
path: root/scripts/automation/trex_control_plane
diff options
context:
space:
mode:
authorHanoh Haim <hhaim@cisco.com>2016-03-01 13:49:56 +0200
committerHanoh Haim <hhaim@cisco.com>2016-03-01 13:49:56 +0200
commit0af59f17029acc700b3a8bc569e05b5603d0a114 (patch)
tree963fe5a32c886d09875c1e82acdc824473db4545 /scripts/automation/trex_control_plane
parentb85911614786e4b507d31fe38e1aaa9e4fe0136c (diff)
add --pkt to stl-sim
Diffstat (limited to 'scripts/automation/trex_control_plane')
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py13
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_sim.py13
-rw-r--r--scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py15
3 files changed, 40 insertions, 1 deletions
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py
index e27563eb..42d648a5 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_packet_builder_scapy.py
@@ -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
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_sim.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_sim.py
index 54d699d8..9db34737 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_sim.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_sim.py
@@ -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'
diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py
index 7964992b..24acd28b 100644
--- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py
+++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py
@@ -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]