ip: Protocol Independent IP Neighbors

Type: feature

 - ip-neighbour: generic neighbour handling; APIs, DBs, event handling,
aging
 - arp: ARP protocol implementation
 - ip6-nd; IPv6 neighbor discovery implementation; separate ND,
MLD, RA
 - ip6-link; manage link-local addresses
 - l2-arp-term; events separated from IP neighbours, since they are not
the same.

vnet retains just enough education to perform ND/ARP packet
construction.
arp and ip6-nd to be moved to plugins soon.

Change-Id: I88dedd0006b299344f4c7024a0aa5baa6b9a8bbe
Signed-off-by: Neale Ranns <nranns@cisco.com>
diff --git a/src/vlibapi/api_helper_macros.h b/src/vlibapi/api_helper_macros.h
index 2662df8..b4e69b4 100644
--- a/src/vlibapi/api_helper_macros.h
+++ b/src/vlibapi/api_helper_macros.h
@@ -250,8 +250,7 @@
 _(from_netconf_client)                          \
 _(oam_events)                                   \
 _(bfd_events)                                   \
-_(wc_ip6_nd_events)                             \
-_(wc_ip4_arp_events)                            \
+_(l2_arp_term_events)                           \
 _(ip6_ra_events)                                \
 _(dhcp6_pd_reply_events)                        \
 _(dhcp6_reply_events)
@@ -262,24 +261,16 @@
   u32 client_pid;
 } vpe_client_registration_t;
 
-struct _vl_api_ip4_arp_event;
-struct _vl_api_ip6_nd_event;
-
 typedef struct
 {
-#define _(a) uword *a##_registration_hash;              \
-    vpe_client_registration_t * a##_registrations;
+#define _(a)                                            \
+  uword *a##_registration_hash;                         \
+  vpe_client_registration_t * a##_registrations;
   foreach_registration_hash
 #undef _
     /* notifications happen really early in the game */
   u8 link_state_process_up;
 
-  /* ip4 arp event registration pool */
-  struct _vl_api_ip4_arp_event *arp_events;
-
-  /* ip6 nd event registration pool */
-  struct _vl_api_ip6_nd_event *nd_events;
-
   /* convenience */
   vlib_main_t *vlib_main;
   vnet_main_t *vnet_main;