diff options
Diffstat (limited to 'src/plugins/arping/arping.c')
-rw-r--r-- | src/plugins/arping/arping.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/plugins/arping/arping.c b/src/plugins/arping/arping.c index 14f92589ea7..11fb0704dd3 100644 --- a/src/plugins/arping/arping.c +++ b/src/plugins/arping/arping.c @@ -500,6 +500,7 @@ arping_neighbor_advertisement (vlib_main_t *vm, arping_args_t *args) vlib_cli_output (vm, "Sending %u GARP to %U", send_count, format_ip4_address, &args->address.ip.ip4); ip4_neighbor_advertise (vm, vnm, args->sw_if_index, + vlib_get_thread_index (), &args->address.ip.ip4); } else @@ -509,6 +510,7 @@ arping_neighbor_advertisement (vlib_main_t *vm, arping_args_t *args) send_count, format_ip6_address, &args->address.ip.ip6); ip6_neighbor_advertise (vm, vnm, args->sw_if_index, + vlib_get_thread_index (), &args->address.ip.ip6); } args->repeat--; @@ -554,7 +556,8 @@ arping_neighbor_probe_dst (vlib_main_t *vm, arping_args_t *args) arping_intf_t aif; /* Disallow multiple sends on the same interface for now. Who needs it? */ - if (am->interfaces && (am->interfaces[args->sw_if_index] != 0)) + if ((vec_len (am->interfaces) > args->sw_if_index) && + (am->interfaces[args->sw_if_index] != 0)) { error = clib_error_return ( 0, "arping command is in progress for the same interface. " @@ -586,7 +589,8 @@ arping_neighbor_probe_dst (vlib_main_t *vm, arping_args_t *args) if (args->silence == 0) vlib_cli_output (vm, "Sending %u ARP Request to %U", send_count, format_ip4_address, &args->address.ip.ip4); - ip4_neighbor_probe_dst (args->sw_if_index, &args->address.ip.ip4); + ip4_neighbor_probe_dst (args->sw_if_index, vlib_get_thread_index (), + &args->address.ip.ip4); } else { @@ -594,7 +598,8 @@ arping_neighbor_probe_dst (vlib_main_t *vm, arping_args_t *args) vlib_cli_output (vm, "Sending %u Neighbor Solicitation to %U", send_count, format_ip6_address, &args->address.ip.ip6); - ip6_neighbor_probe_dst (args->sw_if_index, &args->address.ip.ip6); + ip6_neighbor_probe_dst (args->sw_if_index, vlib_get_thread_index (), + &args->address.ip.ip6); } args->repeat--; if ((args->interval > 0.0) && (args->repeat > 0)) |