summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2017-04-19 05:24:40 -0700
committerFlorin Coras <florin.coras@gmail.com>2017-04-19 20:23:34 +0000
commit2a3ea49d5cc224ffb2cf02bacaf0c02ddae12b86 (patch)
tree8b6a6176a3129c14c70308fdc5ab338ddc06523d /src
parentc06eeb0e3c9c1a9fa8f913e2d785b03220bfdabd (diff)
Learn IP6 link-local ND entries from NSs sourced from link-local address
Change-Id: I4c3ce4d58df7977490fc94991291422ea1e31ee3 Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src')
-rw-r--r--src/vnet/ethernet/arp.c3
-rw-r--r--src/vnet/ip/ip6_neighbor.c7
2 files changed, 8 insertions, 2 deletions
diff --git a/src/vnet/ethernet/arp.c b/src/vnet/ethernet/arp.c
index 3e292e4df93..31af4fbaa80 100644
--- a/src/vnet/ethernet/arp.c
+++ b/src/vnet/ethernet/arp.c
@@ -584,6 +584,9 @@ vnet_arp_set_ip4_over_ethernet_internal (vnet_main_t * vnm,
FIB_PROTOCOL_IP4, &pfx.fp_addr,
e->sw_if_index, ~0, 1, NULL,
FIB_ROUTE_PATH_FLAG_NONE);
+ }
+ else
+ {
e->flags |= ETHERNET_ARP_IP4_ENTRY_FLAG_NO_FIB_ENTRY;
}
}
diff --git a/src/vnet/ip/ip6_neighbor.c b/src/vnet/ip/ip6_neighbor.c
index 42edb79a545..31182770261 100644
--- a/src/vnet/ip/ip6_neighbor.c
+++ b/src/vnet/ip/ip6_neighbor.c
@@ -634,6 +634,9 @@ vnet_set_ip6_ethernet_neighbor (vlib_main_t * vm,
FIB_PROTOCOL_IP6, &pfx.fp_addr,
n->key.sw_if_index, ~0, 1, NULL,
FIB_ROUTE_PATH_FLAG_NONE);
+ }
+ else
+ {
n->flags |= IP6_NEIGHBOR_FLAG_NO_FIB_ENTRY;
}
}
@@ -1027,7 +1030,7 @@ icmp6_neighbor_solicitation_or_advertisement (vlib_main_t * vm,
/* If src address unspecified or link local, donot learn neighbor MAC */
if (PREDICT_TRUE (error0 == ICMP6_ERROR_NONE && o0 != 0 &&
- !ip6_sadd_unspecified && !ip6_sadd_link_local))
+ !ip6_sadd_unspecified))
{
ip6_neighbor_main_t *nm = &ip6_neighbor_main;
if (nm->limit_neighbor_cache_size &&
@@ -1040,7 +1043,7 @@ icmp6_neighbor_solicitation_or_advertisement (vlib_main_t * vm,
&h0->target_address,
o0->ethernet_address,
sizeof (o0->ethernet_address),
- 0, 0);
+ 0, ip6_sadd_link_local);
}
if (is_solicitation && error0 == ICMP6_ERROR_NONE)