diff options
author | John Lo <loj@cisco.com> | 2016-10-05 18:16:24 -0400 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2016-10-06 12:08:12 +0000 |
commit | 3f993a6f07bcfd1aff360276c3696bb3909b2fa9 (patch) | |
tree | c81be5785ff54ab23efa7c32ba143ebc25a9fcf7 /vnet | |
parent | 6c681c95e9924b45bede44668e87ec17a96cc8f4 (diff) |
Fix IP6 ND solicitation termination to allow link-local source IP
Move check for link-local source IP address for MAC/IP notification
only. Allow generation of response to IP6 ND solicitation request
if a match is found for target IP irrespective of source IP type.
Change-Id: Ib79d4b75fb4fe8aece625fd8cd26c8b9fc75ea47
Signed-off-by: John Lo <loj@cisco.com>
Diffstat (limited to 'vnet')
-rw-r--r-- | vnet/vnet/ethernet/arp.c | 3 | ||||
-rw-r--r-- | vnet/vnet/ip/ip6_neighbor.c | 5 |
2 files changed, 3 insertions, 5 deletions
diff --git a/vnet/vnet/ethernet/arp.c b/vnet/vnet/ethernet/arp.c index 90d193e86c5..45d0dc8e48a 100644 --- a/vnet/vnet/ethernet/arp.c +++ b/vnet/vnet/ethernet/arp.c @@ -2269,9 +2269,6 @@ arp_term_l2bd (vlib_main_t * vm, iph0 = (ip6_header_t *) l3h0; if (PREDICT_FALSE (ethertype0 == ETHERNET_TYPE_IP6 && iph0->protocol == IP_PROTOCOL_ICMP6 && - !ip6_address_is_link_local_unicast - (&iph0->src_address) - && !ip6_address_is_unspecified (&iph0->src_address))) { diff --git a/vnet/vnet/ip/ip6_neighbor.c b/vnet/vnet/ip/ip6_neighbor.c index a03701b8e80..57359f7adf3 100644 --- a/vnet/vnet/ip/ip6_neighbor.c +++ b/vnet/vnet/ip/ip6_neighbor.c @@ -3406,8 +3406,9 @@ int vnet_ip6_nd_term (vlib_main_t * vm, /* Check if anyone want ND events for L2 BDs */ p = mhash_get (&nm->mac_changes_by_address, &ip6a_zero); - if (p && shg == 0) - { /* Only SHG 0 interface which is more likely local */ + if (p && shg == 0 && /* Only SHG 0 interface which is more likely local */ + !ip6_address_is_link_local_unicast (&ip->src_address)) + { u32 next_index = p[0]; while (next_index != (u32)~0) { |