diff options
author | Hanoh Haim <hhaim@cisco.com> | 2016-03-01 13:49:56 +0200 |
---|---|---|
committer | Hanoh Haim <hhaim@cisco.com> | 2016-03-01 13:49:56 +0200 |
commit | 0af59f17029acc700b3a8bc569e05b5603d0a114 (patch) | |
tree | 963fe5a32c886d09875c1e82acdc824473db4545 /scripts/automation | |
parent | b85911614786e4b507d31fe38e1aaa9e4fe0136c (diff) |
add --pkt to stl-sim
Diffstat (limited to 'scripts/automation')
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] |