From 38ab3bbf9c9b168191c1ccdfeb8ab94a5f6b08c1 Mon Sep 17 00:00:00 2001 From: Hanoh Haim Date: Thu, 4 Feb 2016 16:59:54 +0200 Subject: add udp_pkt.py example --- .../trex_control_plane/client/outer_packages.py | 1 + .../client/trex_stateless_client.py | 12 +++-- scripts/stl/profiles/udp_1pkt.py | 56 ++++++++++++++++++++++ 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 scripts/stl/profiles/udp_1pkt.py diff --git a/scripts/automation/trex_control_plane/client/outer_packages.py b/scripts/automation/trex_control_plane/client/outer_packages.py index f7e2bac9..2565be08 100755 --- a/scripts/automation/trex_control_plane/client/outer_packages.py +++ b/scripts/automation/trex_control_plane/client/outer_packages.py @@ -3,6 +3,7 @@ import sys import os + CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) ROOT_PATH = os.path.abspath(os.path.join(CURRENT_PATH, os.pardir)) # path to trex_control_plane directory PATH_TO_PYTHON_LIB = os.path.abspath(os.path.join(ROOT_PATH, os.pardir, os.pardir, 'external_libs')) diff --git a/scripts/automation/trex_control_plane/client/trex_stateless_client.py b/scripts/automation/trex_control_plane/client/trex_stateless_client.py index ebc9a6ad..95fd2a69 100755 --- a/scripts/automation/trex_control_plane/client/trex_stateless_client.py +++ b/scripts/automation/trex_control_plane/client/trex_stateless_client.py @@ -28,6 +28,7 @@ from trex_async_client import CTRexAsyncClient from yaml import YAMLError + ############################ logger ############################# ############################ ############################# ############################ ############################# @@ -1309,17 +1310,22 @@ class STLClient(object): # convert to new style stream object streams = [HACKSTLStream(stream) for stream in stream_list.compiled] except YAMLError: - # try python + # try python loader try: basedir = os.path.dirname(filename) + sys.path.append(basedir) file = os.path.basename(filename).split('.')[0] module = __import__(file, globals(), locals(), [], -1) + reload(module) # reload the update streams = module.register().get_streams() - except (AttributeError, ImportError): - raise STLError("bad format input file '{0}'".format(filename)) + except Exception as e : + print str(e); + traceback.print_exc(file=sys.stdout) + raise STLError("Unexpected error: '{0}'".format(filename)) + self.add_streams(streams, ports) diff --git a/scripts/stl/profiles/udp_1pkt.py b/scripts/stl/profiles/udp_1pkt.py new file mode 100644 index 00000000..d195b22c --- /dev/null +++ b/scripts/stl/profiles/udp_1pkt.py @@ -0,0 +1,56 @@ +import sys +import os + +# Should be removed +# TBD fix this +CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) +API_PATH = os.path.join(CURRENT_PATH, "../../api/stl") +sys.path.insert(0, API_PATH) + +from scapy.all import * +from trex_stl_api import * + +class STLS1(object): + + def __init__ (self): + self.mode =0; + self.fsize =64; + + def create_pkt_base (self): + t=[ + Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025), + Ether()/Dot1Q(vlan=12)/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025), + Ether()/Dot1Q(vlan=12)/Dot1Q(vlan=12)/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025), + Ether()/Dot1Q(vlan=12)/IP(src="16.0.0.1",dst="48.0.0.1")/TCP(dport=12,sport=1025), + Ether()/Dot1Q(vlan=12)/IPv6(src="::5")/TCP(dport=12,sport=1025), + Ether()/IP()/UDP()/IPv6(src="::5")/TCP(dport=12,sport=1025) + ]; + return t[self.mode] + + def create_stream (self): + # create a base packet and pad it to size + size = self.fsize - 4; # no FCS + + base_pkt = self.create_pkt_base () + + pad = max(0, size - len(base_pkt)) * 'x' + + pkt = STLPktBuilder(pkt = base_pkt/pad, + vm = []) + + return STLStream(packet = pkt, + mode = STLTXCont()) + + + + def get_streams (self, direction = 0): + # create 1 stream + return [ self.create_stream() ] + + +# dynamic load - used for trex console or simulator +def register(): + return STLS1() + + + -- cgit 1.2.3-korg