fib: Source Address Selection
[vpp.git] / src / vnet / ip-neighbor / ip_neighbor.h
index cb384c5..064569b 100644 (file)
 
 #include <vnet/adj/adj.h>
 
-void ip_neighbor_scan_enable_disable (ip_neighbor_scan_arg_t * arg);
-
 
 /*****
  * APIs external modules can invoke on the neighbor subsystem
  */
 
 extern ip_neighbor_t *ip_neighbor_get (index_t ipni);
-extern int ip_neighbor_add (const ip46_address_t * ip,
-                           ip46_type_t type,
+extern int ip_neighbor_add (const ip_address_t * ip,
                            const mac_address_t * mac,
                            u32 sw_if_index,
                            ip_neighbor_flags_t flags, u32 * stats_index);
-extern int ip_neighbor_del (const ip46_address_t * ip,
-                           ip46_type_t type, u32 sw_if_index);
+extern int ip_neighbor_del (const ip_address_t * ip, u32 sw_if_index);
+
+extern int ip_neighbor_config (ip_address_family_t af,
+                              u32 limit, u32 age, bool recycle);
 
-extern int ip_neighbor_config (ip46_type_t type, u32 limit, u32 age,
-                              bool recycle);
+extern void ip_neighbor_del_all (ip_address_family_t af, u32 sw_if_index);
 
 typedef walk_rc_t (*ip_neighbor_walk_cb_t) (index_t ipni, void *ctx);
-extern void ip_neighbor_walk (ip46_type_t type,
+extern void ip_neighbor_walk (ip_address_family_t af,
                              u32 sw_if_index,
                              ip_neighbor_walk_cb_t fn, void *ctx);
 
-extern const ip46_address_t *ip_neighbor_get_ip (const ip_neighbor_t * ipn);
+extern const ip_address_t *ip_neighbor_get_ip (const ip_neighbor_t * ipn);
+extern ip_address_family_t ip_neighbor_get_af (const ip_neighbor_t * ipn);
 extern const mac_address_t *ip_neighbor_get_mac (const ip_neighbor_t * ipn);
 extern const u32 ip_neighbor_get_sw_if_index (const ip_neighbor_t * ipn);
 
@@ -54,18 +53,18 @@ extern void ip_neighbor_learn (const ip_neighbor_learn_t * l);
 
 extern void ip_neighbor_update (vnet_main_t * vnm, adj_index_t ai);
 
-extern void ip_neighbor_advertise (vlib_main_t * vm,
-                                  ip46_type_t tyoe,
-                                  const ip46_address_t * addr,
-                                  u32 sw_if_index);
 extern void ip_neighbor_probe (const ip_adjacency_t * adj);
-extern void ip_neighbor_probe_dst (const ip_adjacency_t * adj,
+extern void ip_neighbor_probe_dst (u32 sw_if_index,
+                                  ip_address_family_t af,
                                   const ip46_address_t * ip);
 
+extern void ip_neighbor_mark (ip_address_family_t af);
+extern void ip_neighbor_sweep (ip_address_family_t af);
+
 /**
  * From the watcher to the API to publish a new neighbor
  */
-extern void ip_neighbor_handle_event (const ip_neighbor_event_t * ipne);
+extern void ip_neighbor_handle_event (ip_neighbor_event_t * ipne);
 
 /**
  * The set of function that vnet requires from the IP neighbour module.
@@ -109,7 +108,7 @@ typedef struct ip_neighbor_vft_t_
   ip6_neighbor_proxy_cfg_t inv_proxy6_del;
 } ip_neighbor_vft_t;
 
-extern void ip_neighbor_register (ip46_type_t type,
+extern void ip_neighbor_register (ip_address_family_t af,
                                  const ip_neighbor_vft_t * vft);