Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/netinet6 remove unnecessary state, ND6_LLINFO_WAITDELETE...
details: https://anonhg.NetBSD.org/src/rev/e0eed971089a
branches: trunk
changeset: 504136:e0eed971089a
user: itojun <itojun%NetBSD.org@localhost>
date: Fri Feb 23 06:41:50 2001 +0000
description:
remove unnecessary state, ND6_LLINFO_WAITDELETE, from neighbor cache
state machine.
no need for RTF_REJECT on neighbor cache entires, they are leftover from
ARP code.
sync with kame.
diffstat:
sys/netinet6/nd6.c | 52 +++-------------------------------------------------
sys/netinet6/nd6.h | 13 ++++++++++---
2 files changed, 13 insertions(+), 52 deletions(-)
diffs (159 lines):
diff -r f65f95533188 -r e0eed971089a sys/netinet6/nd6.c
--- a/sys/netinet6/nd6.c Fri Feb 23 05:38:27 2001 +0000
+++ b/sys/netinet6/nd6.c Fri Feb 23 06:41:50 2001 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: nd6.c,v 1.40 2001/02/21 17:23:09 itojun Exp $ */
+/* $NetBSD: nd6.c,v 1.41 2001/02/23 06:41:50 itojun Exp $ */
/* $KAME: nd6.c,v 1.131 2001/02/21 16:28:18 itojun Exp $ */
/*
@@ -509,9 +509,6 @@
} else
next = nd6_free(rt);
break;
- case ND6_LLINFO_WAITDELETE:
- next = nd6_free(rt);
- break;
}
ln = next;
}
@@ -646,29 +643,6 @@
}
ln = nln;
}
-
- /*
- * Neighbor cache entry for interface route will be retained
- * with ND6_LLINFO_WAITDELETE state, by nd6_free(). Nuke it.
- */
- ln = llinfo_nd6.ln_next;
- while (ln && ln != &llinfo_nd6) {
- struct rtentry *rt;
- struct sockaddr_dl *sdl;
-
- nln = ln->ln_next;
- rt = ln->ln_rt;
- if (rt && rt->rt_gateway &&
- rt->rt_gateway->sa_family == AF_LINK) {
- sdl = (struct sockaddr_dl *)rt->rt_gateway;
- if (sdl->sdl_index == ifp->if_index) {
- rtrequest(RTM_DELETE, rt_key(rt),
- (struct sockaddr *)0, rt_mask(rt), 0,
- (struct rtentry **)0);
- }
- }
- ln = nln;
- }
}
struct rtentry *
@@ -825,7 +799,6 @@
struct rtentry *rt;
{
struct llinfo_nd6 *ln = (struct llinfo_nd6 *)rt->rt_llinfo, *next;
- struct sockaddr_dl *sdl;
struct in6_addr in6 = ((struct sockaddr_in6 *)rt_key(rt))->sin6_addr;
struct nd_defrouter *dr;
@@ -883,15 +856,6 @@
splx(s);
}
- if (rt->rt_refcnt > 0 && (sdl = SDL(rt->rt_gateway)) &&
- sdl->sdl_family == AF_LINK) {
- sdl->sdl_alen = 0;
- ln->ln_state = ND6_LLINFO_WAITDELETE;
- ln->ln_asked = 0;
- rt->rt_flags &= ~RTF_REJECT;
- return ln->ln_next;
- }
-
/*
* Before deleting the entry, remember the next entry as the
* return value. We need this because pfxlist_onlink_check() above
@@ -1040,14 +1004,12 @@
* XXX Does the code conform to rate-limiting rule?
* (RFC 2461 7.2.2)
*/
- if (ln->ln_state == ND6_LLINFO_WAITDELETE ||
- ln->ln_state == ND6_LLINFO_NOSTATE)
+ if (ln->ln_state == ND6_LLINFO_NOSTATE)
ln->ln_state = ND6_LLINFO_INCOMPLETE;
if (ln->ln_hold)
m_freem(ln->ln_hold);
ln->ln_hold = m;
if (ln->ln_expire) {
- rt->rt_flags &= ~RTF_REJECT;
if (ln->ln_asked < nd6_mmaxtries &&
ln->ln_expire < time_second) {
ln->ln_asked++;
@@ -1679,7 +1641,6 @@
ln->ln_state = newstate;
if (ln->ln_state == ND6_LLINFO_STALE) {
- rt->rt_flags &= ~RTF_REJECT;
if (ln->ln_hold) {
#ifdef OLDIP6OUTPUT
(*ifp->if_output)(ifp, ln->ln_hold,
@@ -1867,9 +1828,6 @@
*/
if (!nd6_is_addr_neighbor(gw6, ifp) ||
in6ifa_ifpwithaddr(ifp, &gw6->sin6_addr)) {
- if (rt->rt_flags & RTF_REJECT)
- senderr(EHOSTDOWN);
-
/*
* We allow this kind of tricky route only
* when the outgoing interface is p2p.
@@ -1890,8 +1848,6 @@
senderr(EHOSTUNREACH);
}
}
- if (rt->rt_flags & RTF_REJECT)
- senderr(rt == rt0 ? EHOSTDOWN : EHOSTUNREACH);
}
/*
@@ -1961,14 +1917,12 @@
* XXX Does the code conform to rate-limiting rule?
* (RFC 2461 7.2.2)
*/
- if (ln->ln_state == ND6_LLINFO_WAITDELETE ||
- ln->ln_state == ND6_LLINFO_NOSTATE)
+ if (ln->ln_state == ND6_LLINFO_NOSTATE)
ln->ln_state = ND6_LLINFO_INCOMPLETE;
if (ln->ln_hold)
m_freem(ln->ln_hold);
ln->ln_hold = m;
if (ln->ln_expire) {
- rt->rt_flags &= ~RTF_REJECT;
if (ln->ln_asked < nd6_mmaxtries &&
ln->ln_expire < time_second) {
ln->ln_asked++;
diff -r f65f95533188 -r e0eed971089a sys/netinet6/nd6.h
--- a/sys/netinet6/nd6.h Fri Feb 23 05:38:27 2001 +0000
+++ b/sys/netinet6/nd6.h Fri Feb 23 06:41:50 2001 +0000
@@ -1,5 +1,5 @@
-/* $NetBSD: nd6.h,v 1.18 2001/02/08 12:57:55 itojun Exp $ */
-/* $KAME: nd6.h,v 1.46 2001/02/08 10:57:00 itojun Exp $ */
+/* $NetBSD: nd6.h,v 1.19 2001/02/23 06:41:50 itojun Exp $ */
+/* $KAME: nd6.h,v 1.52 2001/02/19 04:40:37 itojun Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -54,7 +54,14 @@
};
#define ND6_LLINFO_NOSTATE -2
-#define ND6_LLINFO_WAITDELETE -1
+/*
+ * We don't need the WAITDELETE state any more, but we keep the definition
+ * in a comment line instead of removing it. This is necessary to avoid
+ * unintentionally reusing the value for another purpose, which might
+ * affect backward compatibility with old applications.
+ * (20000711 jinmei%kame.net@localhost)
+ */
+/* #define ND6_LLINFO_WAITDELETE -1 */
#define ND6_LLINFO_INCOMPLETE 0
#define ND6_LLINFO_REACHABLE 1
#define ND6_LLINFO_STALE 2
Home |
Main Index |
Thread Index |
Old Index