summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/nd6.c
diff options
context:
space:
mode:
authorgnn <gnn@FreeBSD.org>2006-06-08 00:31:17 +0000
committergnn <gnn@FreeBSD.org>2006-06-08 00:31:17 +0000
commit3b364427e5617217905e74b60e4576f9a1af18a4 (patch)
tree949b9634b02f7c8aac16dccd42686e8e083dc6ab /sys/netinet6/nd6.c
parentb2f065226110fdafc15d7abf538c9944b3ff7d6f (diff)
downloadFreeBSD-src-3b364427e5617217905e74b60e4576f9a1af18a4.zip
FreeBSD-src-3b364427e5617217905e74b60e4576f9a1af18a4.tar.gz
Fix spurious warnings from neighbor discovery when working with IPv6 over
point to point tunnels (gif). PR: 93220 Submitted by: Jinmei Tatuya MFC after: 1 week
Diffstat (limited to 'sys/netinet6/nd6.c')
-rw-r--r--sys/netinet6/nd6.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c
index 3ff8b22..ad7e079 100644
--- a/sys/netinet6/nd6.c
+++ b/sys/netinet6/nd6.c
@@ -512,6 +512,19 @@ nd6_llinfo_timer(arg)
ln->ln_asked++;
nd6_llinfo_settimer(ln, (long)ndi->retrans * hz / 1000);
nd6_ns_output(ifp, dst, dst, ln, 0);
+ } else if (rt->rt_ifa != NULL &&
+ rt->rt_ifa->ifa_addr->sa_family == AF_INET6 &&
+ (((struct in6_ifaddr *)rt->rt_ifa)->ia_flags & IFA_ROUTE)) {
+ /*
+ * This is an unreachable neighbor whose address is
+ * specified as the destination of a p2p interface
+ * (see in6_ifinit()). We should not free the entry
+ * since this is sort of a "static" entry generated
+ * via interface address configuration.
+ */
+ ln->ln_asked = 0;
+ ln->ln_expire = 0; /* make it permanent */
+ ln->ln_state = ND6_LLINFO_STALE;
} else {
(void)nd6_free(rt, 0);
ln = NULL;
OpenPOWER on IntegriCloud