netbsd-bugs@netbsd.org
[Top] [All Lists]

kern/42095: Interface specific IPv6 'accept_rtadv' effectively always se

Subject: kern/42095: Interface specific IPv6 'accept_rtadv' effectively always set to 0 at startup
From:
Date: Sat, 19 Sep 2009 14:10:00 +0000 UTC
>Number:         42095
>Category:       kern
>Synopsis:       Interface specific IPv6 'accept_rtadv' effectively always set 
>to 0 at startup
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Sep 19 14:10:00 +0000 2009
>Originator:     Markus W Kilbinger
>Release:        NetBSD 5.99.17
>Organization:
>Environment:
        
        
System: NetBSD Q 5.99.17 NetBSD 5.99.17 (Q) #22: Fri Sep 18 05:35:25 MEST 2009 
root@q:/usr/u/NetBSD/HEAD/src/sys/arch/amd64/compile/Q amd64
Architecture: x86_64
Machine: amd64
>Description:
        Recent IPv6 changes to have interface specific 'accept_rtadv'
        flags lead to a _not_ 'ip6mode=autohost' capable system after
        startup, because the interface's 'accept_rtadv' flags is
        always turned off during booting.

        Reading the source (src/sys/netinet6/nd6.c) the reason seems
        to be the initially zeroed system wide 'ip6_accept_rtadv'
        variable in:

          struct nd_ifinfo *
          nd6_ifattach(struct ifnet *ifp)
          {
          [...]
            nd->flags = (ND6_IFF_PERFORMNUD |
              (ip6_accept_rtadv ? ND6_IFF_ACCEPT_RTADV : 0));

        Later /etc/rc.d-scripts set 'ip6_accept_rtadv=1', but I guess
        it's too late for this earlier conditional to set the
        interface specific 'accept_rtadv' flag accordingly.

        Result is that every interface is in a not-'accept_rtadv'
        state after booting (first, you can change that with ndp).
        That is at least the opposite of what 'man 8 ndp' says.
>How-To-Repeat:
        Boot a -current system with 'ip6mode=autohost' and see how it
        does not accept rtadv's.
>Fix:
        Unconditionally (un)set 'ND6_IFF_ACCEPT_RTADV' flag in
        'nd6_ifattach'?

        ... eventually adapt documentation.

        Some kind of workaround:

        Add an

          !/usr/sbin/ndp -i $int accept_rtadv

        entry in the interface's /etc/ifconfig.NNN, but this requires
        '/usr/sbin' available at this early boot stage...

        -> Move  /usr/sbin/ndp --> /sbin/ndp ?

        ... depends on the intention of these changes.

>Unformatted:
        
        

<Prev in Thread] Current Thread [Next in Thread>