IGMP: proxy device
[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                  src_ip,
29                  dst_ip,
30                  src_port,
31                  dst_port,
32                  table_id=0):
33         self._test = test
34         self.table_id = table_id
35         self.src_ip_s = src_ip
36         self.dst_ip_s = dst_ip
37         self.src_ip = VppIpAddress(src_ip)
38         self.dst_ip = VppIpAddress(dst_ip)
39         self.src_port = src_port
40         self.dst_port = dst_port
41
42     def add_vpp_config(self):
43         r = self._test.vapi.udp_encap_add(
44             self.src_ip.encode(),
45             self.dst_ip.encode(),
46             self.src_port,
47             self.dst_port,
48             self.table_id)
49         self.id = r.id
50         self._test.registry.register(self, self._test.logger)
51
52     def remove_vpp_config(self):
53         self._test.vapi.udp_encap_del(self.id)
54
55     def query_vpp_config(self):
56         return find_udp_encap(self._test, self)
57
58     def __str__(self):
59         return self.object_id()
60
61     def object_id(self):
62         return ("udp-encap-%d" % self.id)
63
64     def get_stats(self):
65         c = self._test.statistics.get_counter("/net/udp-encap")
66         return c[0][self.id]