cvs commit: src/sys/netinet6 nd6.c
Brian F. Feldman
green at FreeBSD.org
Mon Dec 8 14:18:50 PST 2003
Hajimu UMEMOTO <ume at FreeBSD.org> 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 at FreeBSD.org \ The Power to Serve! \
Opinions expressed are my own. \,,,,,,,,,,,,,,,,,,,,,,\
More information about the cvs-src
mailing list