tests: replace pycodestyle with black
[vpp.git] / src / plugins / nat / extras / nat_ses_open.py
1 from trex_stl_lib.api import *
2
3
4 class STLS1:
5     def __init__(self):
6         self.ip_range = {
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"},
10         }
11         self.port_range = {
12             "local": {"start": 1025, "end": 65535},
13             "remote": {"start": 12, "end": 12},
14         }
15
16     def create_stream(self, vm):
17         base_pkt = Ether() / IP() / UDP()
18
19         if len(base_pkt) < 64:
20             pad_len = 64 - len(base_pkt)
21             pad = Padding()
22             pad.load = "\x00" * pad_len
23             base_pkt = base_pkt / pad
24
25         pkt = STLPktBuilder(pkt=base_pkt, vm=vm)
26         return STLStream(packet=pkt, mode=STLTXCont())
27
28     def get_streams(self, direction=0, **kwargs):
29         if direction == 0:
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"]
34         else:
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"]
39
40         vm = STLVM()
41
42         vm.var(
43             name="ip_src",
44             min_value=ip_src["start"],
45             max_value=ip_src["end"],
46             size=4,
47             op="random",
48         )
49         vm.var(
50             name="ip_dst",
51             min_value=ip_dst["start"],
52             max_value=ip_dst["end"],
53             size=4,
54             op="random",
55         )
56         vm.var(
57             name="src_port",
58             min_value=src_port["start"],
59             max_value=src_port["end"],
60             size=2,
61             op="random",
62         )
63         vm.var(
64             name="dst_port",
65             min_value=dst_port["start"],
66             max_value=dst_port["end"],
67             size=2,
68             op="random",
69         )
70
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")
75
76         vm.fix_chksum()
77
78         return [self.create_stream(vm)]
79
80
81 # dynamic load - used for trex console or simulator
82 def register():
83     return STLS1()