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/ip/ip6_neighbor.h b/src/vnet/ip/ip6_neighbor.h
index e273a10..0707a2a 100644
--- a/src/vnet/ip/ip6_neighbor.h
+++ b/src/vnet/ip/ip6_neighbor.h
@@ -20,6 +20,8 @@
#define included_ip6_neighbor_h
#include <vnet/fib/fib_types.h>
+#include <vnet/ethernet/mac_address.h>
+#include <vnet/ip/ip_neighbor.h>
typedef struct
{
@@ -28,18 +30,11 @@
u32 pad;
} ip6_neighbor_key_t;
-typedef enum ip6_neighbor_flags_t_
-{
- IP6_NEIGHBOR_FLAG_STATIC = (1 << 0),
- IP6_NEIGHBOR_FLAG_DYNAMIC = (1 << 1),
- IP6_NEIGHBOR_FLAG_NO_FIB_ENTRY = (1 << 2),
-} __attribute__ ((packed)) ip6_neighbor_flags_t;
-
typedef struct
{
ip6_neighbor_key_t key;
- u8 link_layer_address[8];
- ip6_neighbor_flags_t flags;
+ mac_address_t mac;
+ ip_neighbor_flags_t flags;
f64 time_last_updated;
fib_node_index_t fib_entry_index;
} ip6_neighbor_t;
@@ -81,10 +76,8 @@
extern int vnet_set_ip6_ethernet_neighbor (vlib_main_t * vm,
u32 sw_if_index,
const ip6_address_t * a,
- const u8 * link_layer_address,
- uword n_bytes_link_layer_address,
- int is_static,
- int is_no_fib_entry);
+ const mac_address_t * mac,
+ ip_neighbor_flags_t flags);
extern int vnet_unset_ip6_ethernet_neighbor (vlib_main_t * vm,
u32 sw_if_index,
@@ -99,7 +92,7 @@
{
u32 sw_if_index;
ip6_address_t ip6;
- u8 mac[6];
+ mac_address_t mac;
} wc_nd_report_t;
void wc_nd_set_publisher_node (uword node_index, uword event_type);
@@ -119,8 +112,7 @@
typedef struct
{
- ip6_address_t dst_address;
- u8 dst_address_length;
+ fib_prefix_t prefix;
u8 flags;
u32 valid_time;
u32 preferred_time;
@@ -129,7 +121,7 @@
typedef struct
{
u32 sw_if_index;
- u8 router_address[16];
+ ip6_address_t router_address;
u8 current_hop_limit;
u8 flags;
u16 router_lifetime_in_sec;