>Synopsis:      inet6 route not added for autoconf prefix
>Category:      kernel
>Environment:
        System      : OpenBSD 5.8
        Details     : OpenBSD 5.8-current (GENERIC.MP) #1560: Sun Nov  1 
20:57:59 MST 2015
                         
dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP

        Architecture: OpenBSD.amd64
        Machine     : amd64
>Description:

When configuring an interface for inet6 autoconf and receiving a router
advertisement containing a certain global prefix, a route for that prefix is
not added to the routing table.

The machine sending the router advertisements in question is OpenBSD 5.8-stable
(rtadvd running on carp interface), and the prefix information is visible on
the wire:

    00:00:5e:00:01:09 33:33:00:00:00:01 86dd 166: fe80::200:5eff:fe00:109 > 
ff02::1: icmp6: router advertisement(chlim=64, router_ltime=1800, 
reachable_time=0, retrans_time=0)(prefix info: LA valid_ltime=2592000, 
preferred_ltime=604800, prefix=2001:708:20:e336::/64)(unknown opt_type=25, 
opt_len=5)(unknown opt_type=31, opt_len=3) [icmp6 cksum ok] (len 112, hlim 255)

(I have been having some inet6 issues with my openbsd workstation behind these
carp+pfsync firewalls for a long while, and while I still need to investigate
further, I believe this is an important piece of the puzzle)

>How-To-Repeat:

ifconfig em0 inet6 autoconf
ifconfig em0 # to check your assigned address and prefix length
netstat -rnf inet6 | grep 2001:708:20:e336 # or whatever your prefix is

Observe that only a host entry exists matching the prefix matching the
global address of the interface. Additionally, 'route get' can be used
to verify that addresses in the same prefix are thought to be behind
the default router:

# route get 2001:708:20:e336::123
route to: 2001:708:20:e336::123
destination: ::
mask: default
gateway: fe80::200:5eff:fe00:109%em0

>Fix:
        autoconfigured prefixes should be added as on-link routes.

Reply via email to