X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fmactime%2Fbuiltins.c;h=e90ac661a13a981d5d5815d4ba59a8a4d164668c;hb=cbe25aab3be72154f2c706c39eeba6a77f34450f;hp=906164e6a0d004f8a392a94b5172c2715a1f027d;hpb=96453fd2417ebd1d69354a7fb692976129cea80e;p=vpp.git diff --git a/src/plugins/mactime/builtins.c b/src/plugins/mactime/builtins.c index 906164e6a0d..e90ac661a13 100644 --- a/src/plugins/mactime/builtins.c +++ b/src/plugins/mactime/builtins.c @@ -3,6 +3,17 @@ #include #include #include +#include + +static walk_rc_t +mactime_ip_neighbor_copy (index_t ipni, void *ctx) +{ + mactime_main_t *mm = ctx; + + vec_add1 (mm->arp_cache_copy, ipni); + + return (WALK_CONTINUE); +} static int handle_get_mactime (http_builtin_method_type_t reqtype, @@ -17,17 +28,14 @@ handle_get_mactime (http_builtin_method_type_t reqtype, int i, j; f64 now; vlib_counter_t allow, drop; - ethernet_arp_ip4_entry_t *n, *pool; + ip_neighbor_t *n; char *q = "\""; u8 *s = 0; int need_comma = 0; + /* Walk all ip4 neighbours on all interfaces */ vec_reset_length (mm->arp_cache_copy); - pool = ip4_neighbors_pool (); - - /* *INDENT-OFF* */ - pool_foreach (n, pool, ({ vec_add1 (mm->arp_cache_copy, n[0]);})); - /* *INDENT-ON* */ + ip_neighbor_walk (IP46_TYPE_IP4, ~0, mactime_ip_neighbor_copy, mm); now = clib_timebase_now (&mm->timebase); @@ -124,11 +132,13 @@ handle_get_mactime (http_builtin_method_type_t reqtype, for (j = 0; j < vec_len (mm->arp_cache_copy); j++) { - n = mm->arp_cache_copy + j; - if (!memcmp (dp->mac_address, n->mac.bytes, sizeof (n->mac))) + n = ip_neighbor_get (mm->arp_cache_copy[j]); + if (!memcmp (dp->mac_address, + ip_neighbor_get_mac (n), sizeof (mac_address_t))) { s = format (s, ", %sip4_address%s: %s%U%s", q, q, - q, format_ip4_address, &n->ip4_address, q); + q, format_ip46_address, + ip_neighbor_get_ip (n), IP46_TYPE_IP4, q); break; } }