826378b4de801cf202998b264856595b9b91f7e8
[vpp.git] / test / vpp_udp_encap.py
1 #!/usr/bin/env python
2 """
3   UDP encap objects
4 """
5
6 from vpp_object import *
7 from socket import inet_pton, inet_ntop, AF_INET, AF_INET6
8 from vpp_ip import *
9
10
11 def find_udp_encap(test, ue):
12     encaps = test.vapi.udp_encap_dump()
13     for e in encaps:
14         if ue.id == e.udp_encap.id \
15            and ue.src_ip == e.udp_encap.src_ip \
16            and ue.dst_ip == e.udp_encap.dst_ip \
17            and e.udp_encap.dst_port == ue.dst_port \
18            and e.udp_encap.src_port == ue.src_port:
19             return True
20
21     return False
22
23
24 class VppUdpEncap(VppObject):
25
26     def __init__(self,
27                  test,
28                  id,
29                  src_ip,
30                  dst_ip,
31                  src_port,
32                  dst_port,
33                  table_id=0):
34         self._test = test
35         self.id = id
36         self.table_id = table_id
37         self.src_ip_s = src_ip
38         self.dst_ip_s = dst_ip
39         self.src_ip = VppIpAddress(src_ip)
40         self.dst_ip = VppIpAddress(dst_ip)
41         self.src_port = src_port
42         self.dst_port = dst_port
43
44     def add_vpp_config(self):
45         self._test.vapi.udp_encap_add(
46             self.id,
47             self.src_ip.encode(),
48             self.dst_ip.encode(),
49             self.src_port,
50             self.dst_port,
51             self.table_id)
52         self._test.registry.register(self, self._test.logger)
53
54     def remove_vpp_config(self):
55         self._test.vapi.udp_encap_del(self.id)
56
57     def query_vpp_config(self):
58         return find_udp_encap(self._test, self)
59
60     def __str__(self):
61         return self.object_id()
62
63     def object_id(self):
64         return ("udp-encap-%d" % self.id)