nat: use correct data types for memory sizes
[vpp.git] / src / plugins / nat / nat.api
index 4ce1db1..10e7036 100644 (file)
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-option version = "5.0.0";
+option version = "5.2.0";
 import "vnet/ip/ip_types.api";
 import "vnet/interface_types.api";
 
@@ -110,14 +110,44 @@ define nat_show_config_reply
   u32 translation_buckets;
   u32 translation_memory_size;
   u32 user_buckets;
-  u32 user_memory_size;
+  u64 user_memory_size;
   u32 max_translations_per_user;
   u32 outside_vrf_id;
   u32 inside_vrf_id;
   u32 nat64_bib_buckets;
-  u32 nat64_bib_memory_size;
+  u64 nat64_bib_memory_size;
   u32 nat64_st_buckets;
-  u32 nat64_st_memory_size;
+  u64 nat64_st_memory_size;
+};
+
+enum nat_log_level : u8
+{
+  NAT_LOG_NONE = 0x00,
+  NAT_LOG_ERROR = 0x01,
+  NAT_LOG_WARNING = 0x02,
+  NAT_LOG_NOTICE = 0x03,
+  NAT_LOG_INFO = 0x04,
+  NAT_LOG_DEBUG = 0x05,
+};
+
+/** \brief Run nat44 garbage collection
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+*/
+autoreply define nat44_session_cleanup {
+  u32 client_index;
+  u32 context;
+};
+
+/** \brief Set NAT logging level
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param log_level - logging level
+*/
+autoreply define nat_set_log_level {
+  u32 client_index;
+  u32 context;
+  vl_api_nat_log_level_t log_level;
 };
 
 /** \brief Set NAT workers
@@ -150,7 +180,7 @@ define nat_worker_details {
   u32 context;
   u32 worker_index;
   u32 lcore_id;
-  string name;
+  string name[64];
 };
 
 /** \brief Enable/disable NAT IPFIX logging
@@ -168,85 +198,6 @@ autoreply define nat_ipfix_enable_disable {
   bool enable;
 };
 
-/** \brief Set NAT virtual fragmentation reassembly
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param timeout - reassembly timeout
-    @param max_reass - maximum number of concurrent reassemblies
-    @param max_frag - maximum number of fragmets per reassembly
-    @param drop_frag - if 0 translate fragments, otherwise drop fragments
-    @param is_ip6 - true if IPv6, false if IPv4
-*/
-autoreply define nat_set_reass {
-  u32 client_index;
-  u32 context;
-  u32 timeout;
-  u16 max_reass;
-  u8  max_frag;
-  u8  drop_frag;
-  bool  is_ip6;
-};
-
-/** \brief Get NAT virtual fragmentation reassembly configuration
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-define nat_get_reass {
-  u32 client_index;
-  u32 context;
-};
-
-/** \brief Get NAT virtual fragmentation reassembly configuration reply
-    @param context - sender context, to match reply w/ request
-    @param retval - return code
-    @param ip4_timeout - reassembly timeout
-    @param ip4_max_reass - maximum number of concurrent reassemblies
-    @param ip4_max_frag - maximum number of fragmets per reassembly
-    @param ip4_drop_frag - if 0 translate fragments, otherwise drop fragments
-    @param ip6_timeout - reassembly timeout
-    @param ip6_max_reass - maximum number of concurrent reassemblies
-    @param ip6_max_frag - maximum number of fragmets per reassembly
-    @param ip6_drop_frag - if 0 translate fragments, otherwise drop fragments
-*/
-define nat_get_reass_reply {
-  u32 context;
-  i32 retval;
-  u32 ip4_timeout;
-  u16 ip4_max_reass;
-  u8  ip4_max_frag;
-  u8  ip4_drop_frag;
-  u32 ip6_timeout;
-  u16 ip6_max_reass;
-  u8  ip6_max_frag;
-  u8  ip6_drop_frag;
-};
-
-/** \brief Dump NAT virtual fragmentation reassemblies
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-define nat_reass_dump {
-  u32 client_index;
-  u32 context;
-};
-
-/** \brief NAT virtual fragmentation reassemblies response
-    @param context - sender context, to match reply w/ request
-    @param src_addr - source IPv4 address
-    @param dst_addr - destination IPv4 address
-    @param frag_id - fragment ID
-    @param proto - protocol
-    @param frag_n - number of cached fragments
-*/
-define nat_reass_details {
-  u32 context;
-  vl_api_address_t src_addr;
-  vl_api_address_t dst_addr;
-  u32 frag_id;
-  u8 proto;
-  u8 frag_n;
-};
-
 /** \brief Set values of timeouts for NAT sessions (seconds)
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -505,6 +456,19 @@ service {
  * NAT44 APIs
  */
 
+/** \brief Del NAT44 user
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param ip_address - IPv4 address
+    @param fib_index - FIB index
+*/
+autoreply define nat44_del_user {
+  u32 client_index;
+  u32 context;
+  vl_api_ip4_address_t ip_address;
+  u32 fib_index;
+};
+
 /** \brief Add/del NAT44 address range
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
@@ -657,7 +621,7 @@ autoreply define nat44_add_del_static_mapping {
   u16 external_port;
   vl_api_interface_index_t external_sw_if_index;
   u32 vrf_id;
-  string tag;
+  string tag[64];
 };
 
 /** \brief Dump NAT44 static mappings
@@ -696,7 +660,7 @@ define nat44_static_mapping_details {
   u16 external_port;
   vl_api_interface_index_t external_sw_if_index;
   u32 vrf_id;
-  string tag;
+  string tag[64];
 };
 
 /** \brief Add/delete NAT44 identity mapping
@@ -722,7 +686,7 @@ autoreply define nat44_add_del_identity_mapping {
   u16 port;
   vl_api_interface_index_t sw_if_index;
   u32 vrf_id;
-  string tag;
+  string tag[64];
 };
 
 /** \brief Dump NAT44 identity mappings
@@ -752,7 +716,7 @@ define nat44_identity_mapping_details {
   u16 port;
   vl_api_interface_index_t sw_if_index;
   u32 vrf_id;
-  string tag;
+  string tag[64];
 };
 
 /** \brief Add/delete NAT44 pool address from specific interfce
@@ -872,7 +836,7 @@ define nat44_user_session_details {
     @param probability - probability of the internal node to be randomly matched
     @param vrf_id - VRF id
 */
-typeonly manual_endian define nat44_lb_addr_port {
+typedef nat44_lb_addr_port {
   vl_api_ip4_address_t addr;
   u16 port;
   u8 probability;
@@ -906,9 +870,9 @@ autoreply manual_endian define nat44_add_del_lb_static_mapping {
   u16 external_port;
   u8 protocol;
   u32 affinity;
+  string tag[64];
   u32 local_num;
   vl_api_nat44_lb_addr_port_t locals[local_num];
-  string tag;
 };
 
 /** \brief Add/delete NAT44 load-balancing static mapping rule backend
@@ -962,9 +926,9 @@ manual_endian define nat44_lb_static_mapping_details {
   u8 protocol;
   vl_api_nat_config_flags_t flags;
   u32 affinity;
+  string tag[64];
   u32 local_num;
   vl_api_nat44_lb_addr_port_t locals[local_num];
-  string tag;
 };
 
 /** \brief Delete NAT44 session
@@ -1422,113 +1386,6 @@ autoreply define nat64_add_del_interface_addr {
   vl_api_interface_index_t sw_if_index;
 };
 
-/*
- * DS-Lite APIs
- */
-
-/** \brief Add/delete address range to DS-Lite pool
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-    @param start_addr - start IPv4 address of the range
-    @param end_addr - end IPv4 address of the range
-    @param is_add - true if add, false if delete
-*/
-autoreply define dslite_add_del_pool_addr_range {
-  u32 client_index;
-  u32 context;
-  vl_api_ip4_address_t start_addr;
-  vl_api_ip4_address_t end_addr;
-  bool is_add;
-};
-
-/** \brief Dump DS-Lite addresses
-    @param client_index - opaque cookie to identify the sender
-    @param context - sender context, to match reply w/ request
-*/
-define dslite_address_dump {
-  u32 client_index;
-  u32 context;
-};
-
-/** \brief DS-Lite address details response
-    @param context - sender context, to match reply w/ request
-    @param ip_address - IPv4 address
-*/
-define dslite_address_details {
-  u32 context;
-  vl_api_ip4_address_t ip_address;
-};
-
-/** \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 - IPv6 address
-*/
-autoreply define dslite_set_aftr_addr {
-  u32 client_index;
-  u32 context;
-  vl_api_ip4_address_t ip4_addr;
-  vl_api_ip6_address_t ip6_addr;
-};
-
-/** \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 - IPv6 address
-*/
-define dslite_get_aftr_addr_reply {
-  u32 context;
-  i32 retval;
-  vl_api_ip4_address_t ip4_addr;
-  vl_api_ip6_address_t ip6_addr;
-};
-
-/** \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 - IPv6 address
-*/
-autoreply define dslite_set_b4_addr {
-  u32 client_index;
-  u32 context;
-  vl_api_ip4_address_t ip4_addr;
-  vl_api_ip6_address_t ip6_addr;
-};
-
-/** \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 - IPv6 address
-*/
-define dslite_get_b4_addr_reply {
-  u32 context;
-  i32 retval;
-  vl_api_ip4_address_t ip4_addr;
-  vl_api_ip6_address_t ip6_addr;
-};
-
 /*
  * NAT66 APIs
  */