Subject: Re: wi0 + wep network problems
To: None <current-users@NetBSD.org>
From: David Young <dyoung@pobox.com>
List: current-users
Date: 02/26/2006 18:46:41
On Sun, Feb 26, 2006 at 09:00:49PM +0000, Rui Paulo wrote:
> Jeff Ito <ijk@speakeasy.net> writes:
> 
> > P.S. I noticed (and confirmed on another wired host to make sure they
> > were not related) that ipv6 interfaces (or routes, or *something*)
> > do not come up correctly after a /etc/rc.d/network restart.  After a
> > restart I cannot communicate at all over ipv6 until a reboot.
> > I have not spent a lot of time tracking this down yet since it is not 
> > my most pressing issue.
> 
> I'm aware of this problem but I haven't diagnosed the cause yet..

I just refreshed my memory.  The network rc script removes the link-local
address from each interface.  The link-local addresses are added again
"on demand" as clones of the fe80::/64 route on every interface. They
are added with flags UHLc (instead of UHL), and the kernel will not
"sink" a packet with the RTF_CLONED flag set.  I believe these are the
relevant lines in ip6_input():

        /*
         * Accept the packet if the forwarding interface to the destination
         * according to the routing table is the loopback interface,
         * unless the associated route has a gateway.
         * Note that this approach causes to accept a packet if there is a
         * route to the loopback interface for the destination of the packet.
         * But we think it's even useful in some situations, e.g. when using
         * a special daemon which wants to intercept the packet.
         */     
        if (ip6_forward_rt.ro_rt &&
            (ip6_forward_rt.ro_rt->rt_flags &
             (RTF_HOST|RTF_GATEWAY)) == RTF_HOST &&
            !(ip6_forward_rt.ro_rt->rt_flags & RTF_CLONED) &&

Dave

-- 
David Young             OJC Technologies
dyoung@ojctech.com      Urbana, IL * (217) 278-3933