Date: Thu, 26 Oct 2006 09:52:09 +0300 From: Jan Mikael Melen <jan@melen.org> To: freebsd-hackers@freebsd.org, freebsd-net@freebsd.org Subject: Re: Problem with routes when configuring IPv6 addresses Message-ID: <200610260952.10413.jan@melen.org> In-Reply-To: <200608092157.07573.jan@melen.org> References: <200608092157.07573.jan@melen.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, Just answering my own mail. Here is small patch that fixes this problem for us in 6.1. --- nd6_rtr.c.orig Mon Mar 20 18:23:08 2006 +++ nd6_rtr.c Thu Oct 26 09:48:59 2006 @@ -1409,12 +1409,20 @@ if (pr->ndpr_raf_onlink == 0) continue; - if ((pr->ndpr_stateflags & NDPRF_DETACHED) == 0 && + /* For some reason nd6 tries to find a active + * advertising router also for prefixes that are + * statically configured which shouldn't be the case + */ + if (pr->ndpr_vltime == ND6_INFINITE_LIFETIME) { + pr->ndpr_stateflags &= ~NDPRF_DETACHED; + } else { + if ((pr->ndpr_stateflags & NDPRF_DETACHED) == 0 && find_pfxlist_reachable_router(pr) == NULL) pr->ndpr_stateflags |= NDPRF_DETACHED; if ((pr->ndpr_stateflags & NDPRF_DETACHED) != 0 && find_pfxlist_reachable_router(pr) != 0) pr->ndpr_stateflags &= ~NDPRF_DETACHED; + } } } else { /* there is no prefix that has a reachable router */ On Wednesday 09 August 2006 21:57, Jan Mikael Melen wrote: > Hello, > > I previously already sent this to the freebsd-net list but didn't get any > response so let's try the hackers list instead. > > 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 > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610260952.10413.jan>