From owner-cvs-all@FreeBSD.ORG Mon Dec 8 14:18:50 2003 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from green.bikeshed.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id ED09616A4CF; Mon, 8 Dec 2003 14:18:49 -0800 (PST) Received: from green.bikeshed.org (green@localhost [127.0.0.1]) by green.bikeshed.org (8.12.10/8.12.9) with ESMTP id hB8MInnU016809; Mon, 8 Dec 2003 17:18:49 -0500 (EST) (envelope-from green@green.bikeshed.org) Received: from localhost (green@localhost)hB8MInl1016806; Mon, 8 Dec 2003 17:18:49 -0500 (EST) Message-Id: <200312082218.hB8MInl1016806@green.bikeshed.org> X-Mailer: exmh version 2.6.3 04/04/2003 with nmh-1.0.4 To: Hajimu UMEMOTO In-Reply-To: Message from Hajimu UMEMOTO <200312081159.hB8BxL4O068060@repoman.freebsd.org> From: "Brian F. Feldman" Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 08 Dec 2003 17:18:49 -0500 Sender: green@green.bikeshed.org cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/netinet6 nd6.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Dec 2003 22:18:50 -0000 Hajimu UMEMOTO wrote: > ume 2003/12/08 03:59:21 PST > > FreeBSD src repository > > Modified files: > sys/netinet6 nd6.c > Log: > - changed the logic in nd6_is_addr_neighbor(); check on-link prefixes > (not interface addresses) to see if a given address is on-link. > - skip offlink prefixes in neighbor determination in nd6_is_addr_neighbor. > - in nd6_is_addr_neighbor, regarded every address as on-link when the > default router list is empty. otherwise, we'd not be able make a neighbor > cache for the address. > this algorithm is applied to hosts only. > - in nd6_is_addr_neighbor, check if the default interface is equal to > the interface in question in addition to check if the default router > list is empty. > > Obtained from: KAME Does this have any bearing on the recursion that I (worked around|fixed) because it was locking the same route twice and crashing? --- nd6.c 21 Nov 2003 20:09:00 -0000 1.1 +++ nd6.c 8 Dec 2003 17:17:10 -0000 @@ -1095,7 +1095,8 @@ if (req == RTM_RESOLVE && (nd6_need_cache(ifp) == 0 || /* stf case */ - !nd6_is_addr_neighbor((struct sockaddr_in6 *)rt_key(rt), ifp))) { + ((!(rt->rt_flags & RTF_WASCLONED) || rt->rt_flags & RTF_LLINFO) && + !nd6_is_addr_neighbor((struct sockaddr_in6 *)rt_key(rt), ifp)))) { /* * FreeBSD and BSD/OS often make a cloned host route based * on a less-specific route (e.g. the default route). -- Brian Fundakowski Feldman \'[ FreeBSD ]''''''''''\ <> green@FreeBSD.org \ The Power to Serve! \ Opinions expressed are my own. \,,,,,,,,,,,,,,,,,,,,,,\