NAT44: nat44_add_del_lb_static_mapping enhancements (VPP-1514)
[vpp.git] / src / plugins / nat / nat.api
index 8e37567..f41428b 100644 (file)
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-option version = "4.0.0";
+option version = "4.1.0";
 
 /**
  * @file nat.api
@@ -277,6 +277,96 @@ define nat_get_timeouts_reply {
   u32 icmp;
 };
 
+/** \brief Set address and port assignment algorithm
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param alg - address and port assignment algorithm:
+                 0 - default, 1 - MAP-E, 2 - port range
+                 (see nat_addr_and_port_alloc_alg_t in nat.h)
+    @param psid_offset - number of offset bits (valid only for MAP-E alg)
+    @param psid_length - length of PSID (valid only for MAP-E alg)
+    @param psid - Port Set Identifier (PSID) value (valid only for MAP-E alg)
+    @param start_port - beginning of the port range
+    @param end_port - end of the port range
+*/
+autoreply define nat_set_addr_and_port_alloc_alg {
+  u32 client_index;
+  u32 context;
+  u8 alg;
+  u8 psid_offset;
+  u8 psid_length;
+  u16 psid;
+  u16 start_port;
+  u16 end_port;
+};
+
+/** \brief Get address and port assignment algorithm
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+*/
+define nat_get_addr_and_port_alloc_alg {
+  u32 client_index;
+  u32 context;
+};
+
+/** \brief Get address and port assignment algorithm reply
+    @param context - sender context, to match reply w/ request
+    @param retval - return code
+    @param alg - address and port assignment algorithm:
+                 0 - default, 1 - MAP-E, 2 - port range
+                 (see nat_addr_and_port_alloc_alg_t in nat.h)
+    @param psid_offset - number of offset bits (valid only for MAP-E alg)
+    @param psid_length - length of PSID (valid only for MAP-E alg)
+    @param psid - Port Set Identifier (PSID) value (valid only for MAP-E alg)
+    @param start_port - beginning of the port range
+    @param end_port - end of the port range
+*/
+define nat_get_addr_and_port_alloc_alg_reply {
+  u32 context;
+  i32 retval;
+  u8 alg;
+  u8 psid_offset;
+  u8 psid_length;
+  u16 psid;
+  u16 start_port;
+  u16 end_port;
+};
+
+/** \brief Set TCP MSS rewriting configuration
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param mss_value - MSS value to be used for MSS rewriting
+    @param enable - disable(0)/enable(1) MSS rewriting feature
+*/
+autoreply define nat_set_mss_clamping {
+  u32 client_index;
+  u32 context;
+  u16 mss_value;
+  u8 enable;
+};
+
+/** \brief Get TCP MSS rewriting configuration
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+*/
+define nat_get_mss_clamping {
+  u32 client_index;
+  u32 context;
+};
+
+/** \brief Get TCP MSS rewriting configuration reply
+    @param context - sender context, to match reply w/ request
+    @param retval - return code
+    @param mss_value - MSS value to be used for MSS rewriting
+    @param enable - disable(0)/enable(1) MSS rewriting feature
+*/
+define nat_get_mss_clamping_reply {
+  u32 context;
+  i32 retval;
+  u16 mss_value;
+  u8 enable;
+};
+
 /*
  * NAT44 APIs
  */
@@ -668,6 +758,8 @@ typeonly manual_endian define nat44_lb_addr_port {
                             local address of internal host
     @param out2in_only - if 1 rule match only out2in direction
     @param tag - opaque string tag
+    @param affinity - if 0 disabled, otherwise client IP affinity sticky time
+                      in seconds
     @param local_num - number of local network nodes
     @param locals - local network nodes
 */
@@ -682,10 +774,30 @@ autoreply manual_endian define nat44_add_del_lb_static_mapping {
   u8 self_twice_nat;
   u8 out2in_only;
   u8 tag[64];
-  u8 local_num;
+  u32 affinity;
+  u32 local_num;
   vl_api_nat44_lb_addr_port_t locals[local_num];
 };
 
+/** \brief Add/delete NAT44 load-balancing static mapping rule backend
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_add - 1 if add, 0 if delete
+    @param external_addr - external IPv4 address of the service
+    @param external_port - external L4 port number of the service
+    @param protocol - IP protocol number of the service
+    @param local - local network node
+*/
+autoreply define nat44_lb_static_mapping_add_del_local {
+  u32 client_index;
+  u32 context;
+  u8 is_add;
+  u8 external_addr[4];
+  u16 external_port;
+  u8 protocol;
+  vl_api_nat44_lb_addr_port_t local;
+};
+
 /** \brief Dump NAT44 load-balancing static mapping rules
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -707,6 +819,8 @@ define nat44_lb_static_mapping_dump {
                             local address of internal host
     @param out2in_only - if 1 rule match only out2in direction
     @param tag - opaque string tag
+    @param affinity - if 0 disabled, otherwise client IP affinity sticky time
+                      in seconds
     @param local_num - number of local network nodes
     @param locals - local network nodes
 */
@@ -719,7 +833,8 @@ manual_endian define nat44_lb_static_mapping_details {
   u8 self_twice_nat;
   u8 out2in_only;
   u8 tag[64];
-  u8 local_num;
+  u32 affinity;
+  u32 local_num;
   vl_api_nat44_lb_addr_port_t locals[local_num];
 };