1 from trex_stl_lib.api import *
7 "local": {"start": "10.0.0.3", "end": "10.1.255.255"},
8 "external": {"start": "172.16.1.3", "end": "172.16.1.3"},
9 "remote": {"start": "2.2.0.1", "end": "2.2.0.1"},
12 "local": {"start": 1025, "end": 65535},
13 "remote": {"start": 12, "end": 12},
16 def create_stream(self, vm):
17 base_pkt = Ether() / IP() / UDP()
19 if len(base_pkt) < 64:
20 pad_len = 64 - len(base_pkt)
22 pad.load = "\x00" * pad_len
23 base_pkt = base_pkt / pad
25 pkt = STLPktBuilder(pkt=base_pkt, vm=vm)
26 return STLStream(packet=pkt, mode=STLTXCont())
28 def get_streams(self, direction=0, **kwargs):
30 ip_src = self.ip_range["remote"]
31 ip_dst = self.ip_range["external"]
32 src_port = self.port_range["remote"]
33 dst_port = self.port_range["local"]
35 ip_src = self.ip_range["local"]
36 ip_dst = self.ip_range["remote"]
37 src_port = self.port_range["local"]
38 dst_port = self.port_range["remote"]
44 min_value=ip_src["start"],
45 max_value=ip_src["end"],
51 min_value=ip_dst["start"],
52 max_value=ip_dst["end"],
58 min_value=src_port["start"],
59 max_value=src_port["end"],
65 min_value=dst_port["start"],
66 max_value=dst_port["end"],
71 vm.write(fv_name="ip_src", pkt_offset="IP.src")
72 vm.write(fv_name="ip_dst", pkt_offset="IP.dst")
73 vm.write(fv_name="src_port", pkt_offset="UDP.sport")
74 vm.write(fv_name="dst_port", pkt_offset="UDP.dport")
78 return [self.create_stream(vm)]
81 # dynamic load - used for trex console or simulator