#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 (ip46_type_t type, u32 limit, u32 age,
- bool recycle);
+extern int ip_neighbor_config (ip_address_family_t af,
+ u32 limit, u32 age, bool recycle);
+extern int ip_neighbor_get_config (ip_address_family_t af, u32 *limit,
+ u32 *age, bool *recycle);
-extern void ip_neighbor_del_all (ip46_type_t type, u32 sw_if_index);
+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);
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,
- const ip46_address_t * ip);
+extern void ip_neighbor_probe_dst (u32 sw_if_index, u32 thread_index,
+ ip_address_family_t af,
+ const ip46_address_t *ip);
-extern void ip_neighbor_mark (ip46_type_t type);
-extern void ip_neighbor_sweep (ip46_type_t type);
+extern void ip_neighbor_mark (ip_address_family_t af);
+extern void ip_neighbor_sweep (ip_address_family_t af);
+extern walk_rc_t ip_neighbor_mark_one (index_t ipni, void *ctx);
/**
* 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.
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);
-
#endif /* __INCLUDE_IP_NEIGHBOR_H__ */
/*