On Thu, Dec 28, 2006 at 09:20:19AM +0100, Bjvrn Ketelaars wrote: > Marco S Hyman wrote: > > > up giftunnel 212.182.166.172 64.71.128.81 > > > up inet6 2001:470:1F01:FFFF::1AE1 2001:470:1F01:FFFF::1AE0 prefixlen 128 > > > !route add -inet6 default 2001:470:1F01:FFFF::1AE0 > > > >Mine looks like this (and it works just fine) > > > >----- hostname.gif0 ----- > >tunnel 208.201.244.208 208.201.234.221 > >inet6 alias 2001:05a8:0:1::0123 128 > >dest 2001:05a8:0:1::0122 > >! route add -inet6 default ::1 > >! route change -inet6 default -ifp gif0 > >----- hostname.gif0 ----- > > > >With this setup route show also has the "route: illegal prefixlen" message. > >Ignore it. I don't think it has anything to do with your problem. > > > >// marc > > > > I used your hostname.gif0 as an example which, of course, gave the same > result. This means that I still experience the same problem. > > When I try to setup rtadvd the daemon spits out: > > rtadvd[2175]: <ra_output> sendmsg on fxp1: No route to host > > I have a gut feeling that this message is related to the "route: illegal > prefixlen" message. >
I doubt that. The "route: illegal prefixlen" message is a bad type conversion in route(8) itself and the following diff resolves this issue. I'm not using IPv6 and so I don't know what your rtadvd issue is. -- :wq Claudio Index: sbin/route/show.c =================================================================== RCS file: /cvs/src/sbin/route/show.c,v retrieving revision 1.55 diff -u -p -r1.55 show.c --- sbin/route/show.c 17 Nov 2006 01:11:23 -0000 1.55 +++ sbin/route/show.c 28 Dec 2006 13:29:07 -0000 @@ -677,7 +677,7 @@ netname6(struct sockaddr_in6 *sa6, struc masklen = 0; if (mask) { lim = mask->sin6_len - offsetof(struct sockaddr_in6, sin6_addr); - lim = lim < sizeof(struct in6_addr) ? + lim = lim < (int)sizeof(struct in6_addr) ? lim : sizeof(struct in6_addr); for (p = (u_char *)&mask->sin6_addr, i = 0; i < lim; p++) { if (final && *p) { Index: usr.bin/netstat/show.c =================================================================== RCS file: /cvs/src/usr.bin/netstat/show.c,v retrieving revision 1.3 diff -u -p -r1.3 show.c --- usr.bin/netstat/show.c 17 Nov 2006 01:11:23 -0000 1.3 +++ usr.bin/netstat/show.c 28 Dec 2006 13:30:42 -0000 @@ -683,7 +683,7 @@ netname6(struct sockaddr_in6 *sa6, struc masklen = 0; if (mask) { lim = mask->sin6_len - offsetof(struct sockaddr_in6, sin6_addr); - lim = lim < sizeof(struct in6_addr) ? + lim = lim < (int)sizeof(struct in6_addr) ? lim : sizeof(struct in6_addr); for (p = (u_char *)&mask->sin6_addr, i = 0; i < lim; p++) { if (final && *p) {