lb: add APIs for set interface nat4 and nat6
[vpp.git] / src / vnet / ip / ip_api.c
index 4d2f070..3e04b9f 100644 (file)
@@ -43,8 +43,8 @@
 #include <vnet/fib/ip6_fib.h>
 #include <vnet/fib/fib_path_list.h>
 #include <vnet/ip/ip6_hop_by_hop.h>
-#include <vnet/ip/ip4_reassembly.h>
-#include <vnet/ip/ip6_reassembly.h>
+#include <vnet/ip/reass/ip4_full_reass.h>
+#include <vnet/ip/reass/ip6_full_reass.h>
 #include <vnet/ethernet/arp.h>
 #include <vnet/ip/ip_types_api.h>
 
@@ -66,6 +66,7 @@
 
 #include <vlibapi/api_helper_macros.h>
 
+#include <vnet/format_fns.h>
 
 #define foreach_ip_api_msg                                              \
 _(IP_TABLE_DUMP, ip_table_dump)                                         \
@@ -667,13 +668,8 @@ ip_route_add_del_t_handler (vl_api_ip_route_add_del_t * mp, u32 * stats_index)
   if (0 != rv)
     goto out;
 
-  if (0 == mp->route.n_paths)
-    {
-      rv = VNET_API_ERROR_NO_PATHS_IN_ROUTE;
-      goto out;
-    }
-
-  vec_validate (rpaths, mp->route.n_paths - 1);
+  if (0 != mp->route.n_paths)
+    vec_validate (rpaths, mp->route.n_paths - 1);
 
   for (ii = 0; ii < mp->route.n_paths; ii++)
     {
@@ -690,9 +686,9 @@ ip_route_add_del_t_handler (vl_api_ip_route_add_del_t * mp, u32 * stats_index)
        goto out;
     }
 
-  fib_api_route_add_del (mp->is_add,
-                        mp->is_multipath,
-                        fib_index, &pfx, entry_flags, rpaths);
+  rv = fib_api_route_add_del (mp->is_add,
+                             mp->is_multipath,
+                             fib_index, &pfx, entry_flags, rpaths);
 
   if (mp->is_add && 0 == rv)
     *stats_index = fib_table_entry_get_stats_index (fib_index, &pfx);
@@ -1055,6 +1051,8 @@ vl_api_ip_dump_t_handler (vl_api_ip_dump_t * mp)
        send_ip_details (am, reg, sw_if_index, mp->is_ipv6, mp->context);
       }
   }
+
+  vec_free (sorted_sis);
 }
 
 static void
@@ -2550,7 +2548,7 @@ vl_api_ip_probe_neighbor_t_handler (vl_api_ip_probe_neighbor_t * mp)
 
   BAD_SW_IF_INDEX_LABEL;
 
-  REPLY_MACRO (VL_API_PROXY_ARP_INTFC_ENABLE_DISABLE_REPLY);
+  REPLY_MACRO (VL_API_IP_PROBE_NEIGHBOR_REPLY);
 }
 
 static void
@@ -2740,17 +2738,21 @@ vl_api_ip_reassembly_set_t_handler (vl_api_ip_reassembly_set_t * mp)
   int rv = 0;
   if (mp->is_ip6)
     {
-      rv = ip6_reass_set (clib_net_to_host_u32 (mp->timeout_ms),
-                         clib_net_to_host_u32 (mp->max_reassemblies),
-                         clib_net_to_host_u32 (mp->max_reassembly_length),
-                         clib_net_to_host_u32 (mp->expire_walk_interval_ms));
+      rv = ip6_full_reass_set (clib_net_to_host_u32 (mp->timeout_ms),
+                              clib_net_to_host_u32 (mp->max_reassemblies),
+                              clib_net_to_host_u32
+                              (mp->max_reassembly_length),
+                              clib_net_to_host_u32
+                              (mp->expire_walk_interval_ms));
     }
   else
     {
-      rv = ip4_reass_set (clib_net_to_host_u32 (mp->timeout_ms),
-                         clib_net_to_host_u32 (mp->max_reassemblies),
-                         clib_net_to_host_u32 (mp->max_reassembly_length),
-                         clib_net_to_host_u32 (mp->expire_walk_interval_ms));
+      rv = ip4_full_reass_set (clib_net_to_host_u32 (mp->timeout_ms),
+                              clib_net_to_host_u32 (mp->max_reassemblies),
+                              clib_net_to_host_u32
+                              (mp->max_reassembly_length),
+                              clib_net_to_host_u32
+                              (mp->expire_walk_interval_ms));
     }
 
   REPLY_MACRO (VL_API_IP_REASSEMBLY_SET_REPLY);
@@ -2773,15 +2775,16 @@ vl_api_ip_reassembly_get_t_handler (vl_api_ip_reassembly_get_t * mp)
   if (mp->is_ip6)
     {
       rmp->is_ip6 = 1;
-      ip6_reass_get (&rmp->timeout_ms, &rmp->max_reassemblies,
-                    &rmp->expire_walk_interval_ms);
+      ip6_full_reass_get (&rmp->timeout_ms, &rmp->max_reassemblies,
+                         &rmp->max_reassembly_length,
+                         &rmp->expire_walk_interval_ms);
     }
   else
     {
       rmp->is_ip6 = 0;
-      ip4_reass_get (&rmp->timeout_ms, &rmp->max_reassemblies,
-                    &rmp->max_reassembly_length,
-                    &rmp->expire_walk_interval_ms);
+      ip4_full_reass_get (&rmp->timeout_ms, &rmp->max_reassemblies,
+                         &rmp->max_reassembly_length,
+                         &rmp->expire_walk_interval_ms);
     }
   rmp->timeout_ms = clib_host_to_net_u32 (rmp->timeout_ms);
   rmp->max_reassemblies = clib_host_to_net_u32 (rmp->max_reassemblies);
@@ -2796,12 +2799,13 @@ void
 {
   vl_api_ip_reassembly_enable_disable_reply_t *rmp;
   int rv = 0;
-  rv = ip4_reass_enable_disable (clib_net_to_host_u32 (mp->sw_if_index),
-                                mp->enable_ip4);
+  rv = ip4_full_reass_enable_disable (clib_net_to_host_u32 (mp->sw_if_index),
+                                     mp->enable_ip4);
   if (0 == rv)
     {
-      rv = ip6_reass_enable_disable (clib_net_to_host_u32 (mp->sw_if_index),
-                                    mp->enable_ip6);
+      rv =
+       ip6_full_reass_enable_disable (clib_net_to_host_u32 (mp->sw_if_index),
+                                      mp->enable_ip6);
     }
 
   REPLY_MACRO (VL_API_IP_REASSEMBLY_ENABLE_DISABLE_REPLY);