ip-neighbor: Replace feature for the ip-neighbor data-base
[vpp.git] / src / vnet / ip-neighbor / ip_neighbor_api.c
index b066423..86587fa 100644 (file)
@@ -133,6 +133,9 @@ send_ip_neighbor_details (index_t ipni, void *arg)
   clib_memset (mp, 0, sizeof (*mp));
   mp->_vl_msg_id = ntohs (VL_API_IP_NEIGHBOR_DETAILS + REPLY_MSG_ID_BASE);
   mp->context = ctx->context;
+  mp->age =
+    clib_host_to_net_f64 ((vlib_time_now (vlib_get_main ()) -
+                          ipn->ipn_time_last_updated));
   ip_neighbor_encode (&mp->neighbor, ipn);
 
   vl_api_send_msg (ctx->reg, (u8 *) mp);
@@ -272,6 +275,32 @@ vl_api_ip_neighbor_config_t_handler (vl_api_ip_neighbor_config_t * mp)
   REPLY_MACRO (VL_API_IP_NEIGHBOR_CONFIG_REPLY);
 }
 
+static void
+vl_api_ip_neighbor_replace_begin_t_handler (vl_api_ip_neighbor_replace_begin_t
+                                           * mp)
+{
+  vl_api_ip_neighbor_replace_begin_reply_t *rmp;
+  int rv = 0;
+
+  ip_neighbor_mark (IP46_TYPE_IP4);
+  ip_neighbor_mark (IP46_TYPE_IP6);
+
+  REPLY_MACRO (VL_API_IP_NEIGHBOR_REPLACE_BEGIN_REPLY);
+}
+
+static void
+vl_api_ip_neighbor_replace_end_t_handler (vl_api_ip_neighbor_replace_end_t *
+                                         mp)
+{
+  vl_api_ip_neighbor_replace_end_reply_t *rmp;
+  int rv = 0;
+
+  ip_neighbor_sweep (IP46_TYPE_IP4);
+  ip_neighbor_sweep (IP46_TYPE_IP6);
+
+  REPLY_MACRO (VL_API_IP_NEIGHBOR_REPLACE_END_REPLY);
+}
+
 #define vl_msg_name_crc_list
 #include <vnet/ip-neighbor/ip_neighbor.api.h>
 #undef vl_msg_name_crc_list
@@ -287,7 +316,7 @@ ip_neighbor_api_init (vlib_main_t * vm)
   return 0;
 }
 
-VLIB_INIT_FUNCTION (ip_neighbor_api_init);
+VLIB_API_INIT_FUNCTION (ip_neighbor_api_init);
 
 /*
  * fd.io coding-style-patch-verification: ON