Use IP and MAC API types for neighbors
use address_t and mac_address_t for IPv6 and ARP entries
and all other API calls in ip.api aprat from the route ones,
that will follow in a separate commit
Change-Id: I67161737c2184d3f8fc1e79ebd2b55121c5b0191
Signed-off-by: Neale Ranns <nranns@cisco.com>
diff --git a/src/vnet/ethernet/arp.h b/src/vnet/ethernet/arp.h
index 6c89d1e..e99d7a8 100644
--- a/src/vnet/ethernet/arp.h
+++ b/src/vnet/ethernet/arp.h
@@ -19,6 +19,29 @@
#include <vnet/ethernet/ethernet.h>
#include <vnet/ethernet/arp_packet.h>
#include <vnet/ip/ip.h>
+#include <vnet/ip/ip_neighbor.h>
+
+typedef struct
+{
+ u32 sw_if_index;
+ ip4_address_t ip4_address;
+
+ mac_address_t mac;
+
+ ip_neighbor_flags_t flags;
+
+ f64 time_last_updated;
+
+ /**
+ * The index of the adj-fib entry created
+ */
+ fib_node_index_t fib_entry_index;
+} ethernet_arp_ip4_entry_t;
+
+extern u8 *format_ethernet_arp_ip4_entry (u8 * s, va_list * va);
+
+ethernet_arp_ip4_entry_t *ip4_neighbors_pool (void);
+ethernet_arp_ip4_entry_t *ip4_neighbor_entries (u32 sw_if_index);
extern int vnet_proxy_arp_add_del (ip4_address_t * lo_addr,
ip4_address_t * hi_addr,
@@ -28,8 +51,7 @@
u32 sw_if_index,
const
ethernet_arp_ip4_over_ethernet_address_t
- * a, int is_static,
- int is_no_fib_entry);
+ * a, ip_neighbor_flags_t flags);
extern int vnet_arp_unset_ip4_over_ethernet (vnet_main_t * vnm,
u32 sw_if_index,
@@ -39,6 +61,38 @@
extern int vnet_proxy_arp_fib_reset (u32 fib_id);
+void vnet_register_ip4_arp_resolution_event (vnet_main_t * vnm,
+ void *address_arg,
+ uword node_index,
+ uword type_opaque, uword data);
+
+typedef int (*arp_change_event_cb_t) (u32 pool_index,
+ const mac_address_t * mac,
+ u32 sw_if_index,
+ const ip4_address_t * address);
+
+int vnet_add_del_ip4_arp_change_event (vnet_main_t * vnm,
+ arp_change_event_cb_t data_callback,
+ u32 pid,
+ void *address_arg,
+ uword node_index,
+ uword type_opaque,
+ uword data, int is_add);
+
+void wc_arp_set_publisher_node (uword inode_index, uword event_type);
+
+void ethernet_arp_change_mac (u32 sw_if_index);
+void ethernet_ndp_change_mac (u32 sw_if_index);
+
+void arp_update_adjacency (vnet_main_t * vnm, u32 sw_if_index, u32 ai);
+
+typedef struct
+{
+ u32 sw_if_index;
+ ip4_address_t ip;
+ mac_address_t mac;
+} wc_arp_report_t;
+
/**
* call back function when walking the DB of proxy ARPs
* @return 0 to stop the walk !0 to continue