/* It's an address that belongs to one of our interfaces
* that's good. */
}
- else
- if (fib_entry_is_sourced
- (fei, FIB_SOURCE_IP6_ND_PROXY) ||
- fib_entry_is_sourced (fei, FIB_SOURCE_IP6_ND))
+ else if (FIB_ENTRY_FLAG_LOCAL &
+ fib_entry_get_flags_for_source (
+ fei, FIB_SOURCE_IP6_ND))
+ {
+ /* It's one of our link local addresses
+ * that's good. */
+ }
+ else if (fib_entry_is_sourced (fei,
+ FIB_SOURCE_IP6_ND_PROXY))
{
/* The address was added by IPv6 Proxy ND config.
* We should only respond to these if the NS arrived on
dst_ip=self.pg0._remote_hosts[3].ip6_ll,
tgt_ip=self.pg0.local_ip6_ll)
+ #
+ # do not respond to a NS for the peer's address
+ #
+ p = (Ether(dst=in6_getnsmac(nsma), src=self.pg0.remote_mac) /
+ IPv6(dst=d,
+ src=self.pg0._remote_hosts[3].ip6_ll) /
+ ICMPv6ND_NS(tgt=self.pg0._remote_hosts[3].ip6_ll) /
+ ICMPv6NDOptSrcLLAddr(
+ lladdr=self.pg0.remote_mac))
+
+ self.send_and_assert_no_replies(self.pg0, p)
+
#
# we should have learned an ND entry for the peer's link-local
# but not inserted a route to it in the FIB