NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/42095: Interface specific IPv6 'accept_rtadv' effectively always set to 0 at startup
>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:
        
        
Home |
Main Index |
Thread Index |
Old Index