summaryrefslogtreecommitdiffstats
path: root/src/vnet/ethernet/arp.h
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2018-08-10 05:30:06 -0700
committerDamjan Marion <dmarion@me.com>2019-01-30 19:47:53 +0000
commit37029305c671f4e2d091d6f6c22142634e409043 (patch)
treef47257c77b860213fcd1901686874dee43ad1f73 /src/vnet/ethernet/arp.h
parent13b2ba2ad5527c8185dce368993a3877e7daf7a2 (diff)
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>
Diffstat (limited to 'src/vnet/ethernet/arp.h')
-rw-r--r--src/vnet/ethernet/arp.h58
1 files changed, 56 insertions, 2 deletions
diff --git a/src/vnet/ethernet/arp.h b/src/vnet/ethernet/arp.h
index 6c89d1e68cb..e99d7a82db8 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 @@ extern int vnet_arp_set_ip4_over_ethernet (vnet_main_t * vnm,
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_arp_unset_ip4_over_ethernet (vnet_main_t * vnm,
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