Fix IP6 ND solicitation termination to allow link-local source IP 86/3286/2
authorJohn Lo <loj@cisco.com>
Wed, 5 Oct 2016 22:16:24 +0000 (18:16 -0400)
committerDave Barach <openvpp@barachs.net>
Thu, 6 Oct 2016 12:08:12 +0000 (12:08 +0000)
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>
vnet/vnet/ethernet/arp.c
vnet/vnet/ip/ip6_neighbor.c

index 90d193e..45d0dc8 100644 (file)
@@ -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)))
            {
index a03701b..57359f7 100644 (file)
@@ -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)
         {