cnat: Add DHCP support
[vpp.git] / src / plugins / cnat / cnat.api
1 /* Hey Emacs use -*- mode: C -*- */
2 /*
3  * Copyright (c) 2016 Cisco and/or its affiliates.
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /** \file
18     This file defines the vpp control-plane API messages
19     used to control the ABF plugin
20 */
21
22 option version = "0.1.0";
23 import "vnet/ip/ip_types.api";
24 import "vnet/fib/fib_types.api";
25 import "vnet/interface_types.api";
26
27 enum cnat_translation_flags:u8
28 {
29   CNAT_TRANSLATION_ALLOC_PORT = 1,
30 };
31
32 /* An enpoint is either
33  * An IP & a port
34  * An interface, an address familiy and a port */
35 typedef cnat_endpoint
36 {
37   vl_api_address_t addr;
38   vl_api_interface_index_t sw_if_index;
39   vl_api_address_family_t if_af;
40   u16 port;
41 };
42
43 typedef cnat_endpoint_tuple
44 {
45   vl_api_cnat_endpoint_t dst_ep;
46   vl_api_cnat_endpoint_t src_ep;
47 };
48
49 typedef cnat_translation
50 {
51   vl_api_cnat_endpoint_t vip;
52   u32 id;
53   vl_api_ip_proto_t ip_proto;
54   u8 is_real_ip;
55   u8 flags;
56   u8 n_paths;
57   vl_api_cnat_endpoint_tuple_t paths[n_paths];
58 };
59
60 define cnat_translation_update
61 {
62   u32 client_index;
63   u32 context;
64   vl_api_cnat_translation_t translation;
65 };
66
67 define cnat_translation_update_reply
68 {
69   u32 context;
70   i32 retval;
71   u32 id;
72 };
73
74 autoreply define cnat_translation_del
75 {
76   u32 client_index;
77   u32 context;
78   u32 id;
79 };
80
81 define cnat_translation_details
82 {
83   u32 context;
84   vl_api_cnat_translation_t translation;
85 };
86
87 define cnat_translation_dump
88 {
89   u32 client_index;
90   u32 context;
91 };
92
93 autoreply define cnat_session_purge
94 {
95   u32 client_index;
96   u32 context;
97 };
98
99 typedef cnat_session
100 {
101   vl_api_cnat_endpoint_t src;
102   vl_api_cnat_endpoint_t dst;
103   vl_api_cnat_endpoint_t new;
104   vl_api_ip_proto_t ip_proto;
105   f64 timestamp;
106 };
107
108 define cnat_session_details
109 {
110   u32 context;
111   vl_api_cnat_session_t session;
112 };
113
114 define cnat_session_dump
115 {
116   u32 client_index;
117   u32 context;
118 };
119
120 autoreply define cnat_set_snat_addresses
121 {
122   u32 client_index;
123   u32 context;
124   vl_api_ip4_address_t snat_ip4;
125   vl_api_ip6_address_t snat_ip6;
126   vl_api_interface_index_t sw_if_index;
127 };
128
129 define cnat_get_snat_addresses
130 {
131   u32 client_index;
132   u32 context;
133 };
134
135 define cnat_get_snat_addresses_reply
136 {
137   u32 context;
138   i32 retval;
139   u32 id;
140   vl_api_ip4_address_t snat_ip4;
141   vl_api_ip6_address_t snat_ip6;
142   vl_api_interface_index_t sw_if_index;
143 };
144
145 autoreply define cnat_add_del_snat_prefix
146 {
147   u32 client_index;
148   u32 context;
149   u8 is_add;
150   vl_api_prefix_t prefix;
151 };
152
153 /*
154  * fd.io coding-style-patch-verification: ON
155  *
156  * Local Variables:
157  * eval: (c-set-style "gnu")
158  * End:
159  */