gre: Tunnel encap/decap flags
[vpp.git] / test / vpp_gre_interface.py
1
2 from vpp_interface import VppInterface
3 import socket
4 from vpp_papi import VppEnum
5
6
7 class VppGreInterface(VppInterface):
8     """
9     VPP GRE interface
10     """
11
12     def __init__(self, test, src_ip, dst_ip, outer_table_id=0,
13                  type=None, mode=None, flags=0,
14                  session=0):
15         """ Create VPP GRE interface """
16         super(VppGreInterface, self).__init__(test)
17         self.t_src = src_ip
18         self.t_dst = dst_ip
19         self.t_outer_table = outer_table_id
20         self.t_session = session
21         self.t_flags = flags
22         self.t_type = type
23         if not self.t_type:
24             self.t_type = (VppEnum.vl_api_gre_tunnel_type_t.
25                            GRE_API_TUNNEL_TYPE_L3)
26         self.t_mode = mode
27         if not self.t_mode:
28             self.t_mode = (VppEnum.vl_api_tunnel_mode_t.
29                            TUNNEL_API_MODE_P2P)
30
31     def add_vpp_config(self):
32         r = self.test.vapi.gre_tunnel_add_del(
33             is_add=1,
34             tunnel={
35                 'src': self.t_src,
36                 'dst': self.t_dst,
37                 'outer_table_id': self.t_outer_table,
38                 'instance': 0xffffffff,
39                 'type': self.t_type,
40                 'mode': self.t_mode,
41                 'flags': self.t_flags,
42                 'session_id': self.t_session})
43         self.set_sw_if_index(r.sw_if_index)
44         self.generate_remote_hosts()
45         self.test.registry.register(self, self.test.logger)
46         return self
47
48     def remove_vpp_config(self):
49         self.unconfig()
50         self.test.vapi.gre_tunnel_add_del(
51             is_add=0,
52             tunnel={
53                 'src': self.t_src,
54                 'dst': self.t_dst,
55                 'outer_table_id': self.t_outer_table,
56                 'instance': 0xffffffff,
57                 'type': self.t_type,
58                 'mode': self.t_mode,
59                 'flags': self.t_flags,
60                 'session_id': self.t_session})
61
62     def object_id(self):
63         return "gre-%d" % self.sw_if_index
64
65     def query_vpp_config(self):
66         return (self.test.vapi.gre_tunnel_dump(
67             sw_if_index=self._sw_if_index))
68
69     @property
70     def remote_ip(self):
71         return self.t_dst
72
73     @property
74     def local_ip(self):
75         return self.t_src