Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Jul 2006 16:05:44 +0300
From:      Jan Mikael Melen <jan@melen.org>
To:        freebsd-net@freebsd.org
Subject:   Problem with routes when configuring IPv6 addresses
Message-ID:  <200607051605.45014.jan@melen.org>

next in thread | raw e-mail | index | archive | help
Hello,

I have a problem with routes in 6.1 when configuring IPv6 address using both 
autoconfigured addresses at the same time with statically configured 
addresses from different prefixes.

If the host is not accepting router advertisements everything seems to work 
fine:
# sysctl -a | grep rtad
net.inet6.ip6.accept_rtadv: 0
# ifconfig fxp0 inet6 3ffe:101::1 prefixlen 64

# netstat -rn -f inet6 | grep 3ffe:101
3ffe:101::/64                     link#1                        UC         
fxp0
3ffe:101::1                       00:12:3f:71:3e:ef             UHL         
lo0
#                  

As you can see I have two routes one for the loopback and one for the prefix 
as it should GREAT!

Now if I'll set the host to accept router advertisements then the route for 
the 3ffe:101:: prefix will be deleted as the first router advertisement is 
received. The router advertises prefix 3ffe:14b8:400:101::/64.

# sysctl net.inet6.ip6.accept_rtadv=1
net.inet6.ip6.accept_rtadv: 0 -> 1
# rtsol -a
# netstat -rn -f inet6 | grep 3ffe:101
3ffe:101::1                       00:12:3f:71:3e:ef             UHL         
lo0
#

It seems that the route is deleted because in function pfxlist_onlink_check() 
there is a check that if the state has changed to DETACHED the 
nd6_prefix_offlink will be called which then removes the route:
	if ((pr->ndpr_stateflags & NDPRF_DETACHED) != 0 &&
	    (pr->ndpr_stateflags & NDPRF_ONLINK) != 0) {
		if ((e = nd6_prefix_offlink(pr)) != 0) {
			nd6log((LOG_ERR,
			    "pfxlist_onlink_check: failed to "
			    "make %s/%d offlink, errno=%d\n",
			    ip6_sprintf(&pr->ndpr_prefix.sin6_addr),
			    pr->ndpr_plen, e));
		}
	}

This far I digged in to the code but then ran out of steam :-( Obviously the 
state should not be set to DETACHED for manually configured prefixes but the 
question is rather where it should be done.

Before somebody asks, if I first do the autoconfiguration part and then after 
I have the autoconfigured address add the manually configured address the 
result is that there wont be any route for the manually configured prefix 
(3ffe:101::/64).

  Regards,
     Jan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607051605.45014.jan>