Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/netinet6 drop packet to tentative/duplicated interface a...



details:   https://anonhg.NetBSD.org/src/rev/4899caa24e7c
branches:  trunk
changeset: 494122:4899caa24e7c
user:      itojun <itojun%NetBSD.org@localhost>
date:      Sun Jul 02 09:56:39 2000 +0000

description:
drop packet to tentative/duplicated interface address earlier.  sync w/kame

diffstat:

 sys/netinet6/ip6_input.c |  19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

diffs (40 lines):

diff -r eff857ae233b -r 4899caa24e7c sys/netinet6/ip6_input.c
--- a/sys/netinet6/ip6_input.c  Sun Jul 02 09:48:12 2000 +0000
+++ b/sys/netinet6/ip6_input.c  Sun Jul 02 09:56:39 2000 +0000
@@ -1,5 +1,5 @@
-/*     $NetBSD: ip6_input.c,v 1.23 2000/06/28 03:04:03 mrg Exp $       */
-/*     $KAME: ip6_input.c,v 1.94 2000/06/13 10:06:19 jinmei Exp $      */
+/*     $NetBSD: ip6_input.c,v 1.24 2000/07/02 09:56:39 itojun Exp $    */
+/*     $KAME: ip6_input.c,v 1.95 2000/07/02 07:49:37 jinmei Exp $      */
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -488,16 +488,25 @@
            ip6_forward_rt.ro_rt->rt_ifp->if_type == IFT_LOOP) {
                struct in6_ifaddr *ia6 =
                        (struct in6_ifaddr *)ip6_forward_rt.ro_rt->rt_ifa;
-               /* packet to tentative address must not be received */
                if (ia6->ia6_flags & IN6_IFF_ANYCAST)
                        m->m_flags |= M_ANYCAST6;
+               /*
+                * packets to a tentative, duplicated, or somehow invalid
+                * address must not be accepted.
+                */
                if (!(ia6->ia6_flags & IN6_IFF_NOTREADY)) {
-                       /* this interface is ready */
+                       /* this address is ready */
                        ours = 1;
                        deliverifp = ia6->ia_ifp;       /* correct? */
                        goto hbhcheck;
                } else {
-                       /* this interface is not ready, fall through */
+                       /* address is not ready, so discard the packet. */
+                       log(LOG_INFO,
+                           "ip6_input: packet to an unready address %s->%s",
+                           ip6_sprintf(&ip6->ip6_src),
+                           ip6_sprintf(&ip6->ip6_dst));
+
+                       goto bad;
                }
        }
 



Home | Main Index | Thread Index | Old Index