aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/ip/ping.c
diff options
context:
space:
mode:
authorNeale Ranns <neale.ranns@cisco.com>2018-02-24 02:11:19 -0800
committerDamjan Marion <dmarion.lists@gmail.com>2018-03-05 18:41:12 +0000
commit53da221b13225695516ec7469ca29d82bb10e594 (patch)
tree10f31c7fd4acd536cef4793b5c542938da7f09dc /src/vnet/ip/ping.c
parent0e7fe4fddb493350cf78c8126e9cc93d55490c42 (diff)
IP6 link-local table
- IPv6 link local table is a per-SW interface array of IPv6 unicast FIBs - the per-interface ocst is sizeof(fib_table_t) which is small, w.r.t. the cost of an interface - FE80::/10 in the 'global' table points to a DPO that performs a lookup in the input interface's LL fib. Change-Id: Ice834b25ebeeacb2e929d7c864d7ec8c09918cbe Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
Diffstat (limited to 'src/vnet/ip/ping.c')
-rwxr-xr-xsrc/vnet/ip/ping.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/vnet/ip/ping.c b/src/vnet/ip/ping.c
index a142754bdf7..a929a0cdf00 100755
--- a/src/vnet/ip/ping.c
+++ b/src/vnet/ip/ping.c
@@ -314,13 +314,14 @@ send_ip6_ping (vlib_main_t * vm, ip6_main_t * im,
h0->ip6.src_address = *pa6;
/* Fill in the correct source now */
- ip6_address_t *a = ip6_interface_first_address (im, sw_if_index);
- if (!a)
+ if (!ip6_src_address_for_packet (&im->lookup_main,
+ sw_if_index,
+ &h0->ip6.dst_address,
+ &h0->ip6.src_address))
{
vlib_buffer_free (vm, &bi0, 1);
return SEND_PING_NO_SRC_ADDRESS;
}
- h0->ip6.src_address = a[0];
/* Fill in icmp fields */
h0->icmp.type = ICMP6_echo_request;