summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vnet/vnet/ethernet/arp.c3
-rw-r--r--vnet/vnet/ip/ip6_neighbor.c5
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)
{