diff options
Diffstat (limited to 'src/vnet/ethernet')
-rw-r--r-- | src/vnet/ethernet/arp.c | 16 | ||||
-rw-r--r-- | src/vnet/ethernet/arp_packet.h | 3 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/vnet/ethernet/arp.c b/src/vnet/ethernet/arp.c index 0d692cc1070..8df96f6a0f1 100644 --- a/src/vnet/ethernet/arp.c +++ b/src/vnet/ethernet/arp.c @@ -269,7 +269,7 @@ format_ethernet_arp_ip4_entry (u8 * s, va_list * va) flags = format (flags, "N"); s = format (s, "%=12U%=16U%=6s%=20U%U", - format_vlib_cpu_time, vnm->vlib_main, e->cpu_time_last_updated, + format_vlib_time, vnm->vlib_main, e->time_last_updated, format_ip4_address, &e->ip4_address, flags ? (char *) flags : "", format_ethernet_address, e->ethernet_address, @@ -616,14 +616,17 @@ vnet_arp_set_ip4_over_ethernet_internal (vnet_main_t * vnm, */ if (0 == memcmp (e->ethernet_address, a->ethernet, sizeof (e->ethernet_address))) - goto check_customers; + { + e->time_last_updated = vlib_time_now (vm); + goto check_customers; + } /* Update time stamp and ethernet address. */ clib_memcpy (e->ethernet_address, a->ethernet, sizeof (e->ethernet_address)); } - e->cpu_time_last_updated = clib_cpu_time_now (); + e->time_last_updated = vlib_time_now (vm); if (is_static) e->flags |= ETHERNET_ARP_IP4_ENTRY_FLAG_STATIC; else @@ -1300,6 +1303,13 @@ ip4_arp_entry_sort (void *a1, void *a2) } ethernet_arp_ip4_entry_t * +ip4_neighbors_pool (void) +{ + ethernet_arp_main_t *am = ðernet_arp_main; + return am->ip4_entry_pool; +} + +ethernet_arp_ip4_entry_t * ip4_neighbor_entries (u32 sw_if_index) { ethernet_arp_main_t *am = ðernet_arp_main; diff --git a/src/vnet/ethernet/arp_packet.h b/src/vnet/ethernet/arp_packet.h index 4b7b0482fb7..d2a23a5949f 100644 --- a/src/vnet/ethernet/arp_packet.h +++ b/src/vnet/ethernet/arp_packet.h @@ -156,7 +156,7 @@ typedef struct ethernet_arp_entry_flags_t flags; - u64 cpu_time_last_updated; + f64 time_last_updated; /** * The index of the adj-fib entry created @@ -164,6 +164,7 @@ typedef struct fib_node_index_t fib_entry_index; } ethernet_arp_ip4_entry_t; +ethernet_arp_ip4_entry_t *ip4_neighbors_pool (void); ethernet_arp_ip4_entry_t *ip4_neighbor_entries (u32 sw_if_index); u8 *format_ethernet_arp_ip4_entry (u8 * s, va_list * va); |