NAT44: add opaque string tag to static mapping APIs (VPP-1147)
[vpp.git] / src / plugins / nat / nat.api
index d6a912b..aff8f1d 100644 (file)
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-vl_api_version 2.1.0
+option version = "2.4.0";
 
 /**
  * @file nat.api
@@ -352,6 +352,8 @@ define nat44_interface_output_feature_details {
     @param vfr_id - VRF ID
     @param twice_nat - if 1 translate external host address and port, only for
                        1:1 NAPT (addr_only must be 0)
+    @param out2in_only - if 1 rule match only out2in direction
+    @param tag - opaque string tag
 */
 autoreply define nat44_add_del_static_mapping {
   u32 client_index;
@@ -366,6 +368,8 @@ autoreply define nat44_add_del_static_mapping {
   u32 external_sw_if_index;
   u32 vrf_id;
   u8 twice_nat;
+  u8 out2in_only;
+  u8 tag[64];
 };
 
 /** \brief Dump NAT44 static mappings
@@ -388,6 +392,8 @@ define nat44_static_mapping_dump {
     @param external_sw_if_index - external interface
     @param vfr_id - VRF ID
     @param twice_nat - if 1 translate external host address and port
+    @param out2in_only - if 1 rule match only out2in direction
+    @param tag - opaque string tag
 */
 define nat44_static_mapping_details {
   u32 context;
@@ -400,6 +406,8 @@ define nat44_static_mapping_details {
   u32 external_sw_if_index;
   u32 vrf_id;
   u8 twice_nat;
+  u8 out2in_only;
+  u8 tag[64];
 };
 
 /** \brief Add/delete NAT44 identity mapping
@@ -413,6 +421,7 @@ define nat44_static_mapping_details {
     @param sw_if_index - interface (if set ip_address is ignored, ~0 means not
                                     used)
     @param vfr_id - VRF ID (if ~0 use default VRF)
+    @param tag - opaque string tag
 */
 autoreply define nat44_add_del_identity_mapping {
   u32 client_index;
@@ -424,6 +433,7 @@ autoreply define nat44_add_del_identity_mapping {
   u16 port;
   u32 sw_if_index;
   u32 vrf_id;
+  u8 tag[64];
 };
 
 /** \brief Dump NAT44 identity mappings
@@ -443,6 +453,7 @@ define nat44_identity_mapping_dump {
     @param port - port number
     @param sw_if_index - interface
     @param vfr_id - VRF ID
+    @param tag - opaque string tag
 */
 define nat44_identity_mapping_details {
   u32 context;
@@ -452,6 +463,7 @@ define nat44_identity_mapping_details {
   u16 port;
   u32 sw_if_index;
   u32 vrf_id;
+  u8 tag[64];
 };
 
 /** \brief Add/delete NAT44 pool address from specific interfce
@@ -567,6 +579,8 @@ autoreply manual_endian define nat44_add_del_lb_static_mapping {
   u8 protocol;
   u32 vrf_id;
   u8 twice_nat;
+  u8 out2in_only;
+  u8 tag[64];
   u8 local_num;
   vl_api_nat44_lb_addr_port_t locals[local_num];
 };
@@ -583,6 +597,8 @@ manual_endian define nat44_lb_static_mapping_details {
   u8 protocol;
   u32 vrf_id;
   u8 twice_nat;
+  u8 out2in_only;
+  u8 tag[64];
   u8 local_num;
   vl_api_nat44_lb_addr_port_t locals[local_num];
 };
@@ -1159,9 +1175,72 @@ autoreply define dslite_add_del_pool_addr_range {
   u8 is_add;
 };
 
+/** \brief Set AFTR IPv6 and IPv4 addresses
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param ip4_addr - IPv4 address
+    @param ip6_addr - IP64 address
+*/
 autoreply define dslite_set_aftr_addr {
   u32 client_index;
   u32 context;
   u8 ip4_addr[4];
   u8 ip6_addr[16];
 };
+
+/** \brief Get AFTR IPv6 and IPv4 addresses
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+*/
+define dslite_get_aftr_addr {
+  u32 client_index;
+  u32 context;
+};
+
+/** \brief Response to get AFTR IPv6 and IPv4 addresses
+    @param context - sender context, to match reply w/ request
+    @param retval - return code
+    @param ip4_addr - IPv4 address
+    @param ip6_addr - IP64 address
+*/
+define dslite_get_aftr_addr_reply {
+  u32 context;
+  i32 retval;
+  u8 ip4_addr[4];
+  u8 ip6_addr[16];
+};
+
+/** \brief Set B4 IPv6 and IPv4 addresses
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param ip4_addr - IPv4 address
+    @param ip6_addr - IP64 address
+*/
+autoreply define dslite_set_b4_addr {
+  u32 client_index;
+  u32 context;
+  u8 ip4_addr[4];
+  u8 ip6_addr[16];
+};
+
+/** \brief Get B4 IPv6 and IPv4 addresses
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+*/
+define dslite_get_b4_addr {
+  u32 client_index;
+  u32 context;
+};
+
+/** \brief Response to get B4 IPv6 and IPv4 addresses
+    @param context - sender context, to match reply w/ request
+    @param retval - return code
+    @param ip4_addr - IPv4 address
+    @param ip6_addr - IP64 address
+*/
+define dslite_get_b4_addr_reply {
+  u32 context;
+  i32 retval;
+  u8 ip4_addr[4];
+  u8 ip6_addr[16];
+};