Re: 2.4.21+ - IPv6 over IPv4 tunneling b0rked

Mika Penttilä
2003-07-11T14:07:26Z

afaics, ipv6_addr_type() checks just for some rfc-specified reserved
anycast addresses, not the ones in device list. Anyway, it will surely
also bail out from the loopback test (anycast subnet router address is
ours).

--Mika

Mika Liljeberg wrote:

>On Fri, 2003-07-11 at 15:48, Mika Penttilä wrote:
>
>
>>It turns out to be the (otherwise valid) check for IFF_LOOPBACK for
>>gateway's address in ip6_route_add() that gives EINVAL for prefix::, and
>>has nothing to do with iid being 0, just a coinsidence....
>>
>>
>
>Not sure. Seems to me that ipv6_addr_type() flags the gateway address as
>anycast. In ip6_route_addr() [2.5.74] we have:
>
> if (rtmsg->rtmsg_flags & RTF_GATEWAY) {
> struct in6_addr *gw_addr;
> int gwa_type;
>
> gw_addr = &rtmsg->rtmsg_gateway;
> ipv6_addr_copy(&rt->rt6i_gateway, &rtmsg->rtmsg_gateway);
> gwa_type = ipv6_addr_type(gw_addr);
>
> if (gwa_type != (IPV6_ADDR_LINKLOCAL|IPV6_ADDR_UNICAST)) {
> struct rt6_info *grt;
>
> /* IPv6 strictly inhibits using not link-local
> addresses as nexthop address.
> Otherwise, router will not able to send redirects.
> It is very good, but in some (rare!) curcumstances
> (SIT, PtP, NBMA NOARP links) it is handy to allow
> some exceptions. --ANK
> */
> err = -EINVAL;
> if (!(gwa_type&IPV6_ADDR_UNICAST))
> goto out;
>
>Looks like it would bail out here, unless I read the code wrong. How about:
>
> if (!(gwa_type&(IPV6_ADDR_UNICAST|IPV6_ADDR_ANYCAST)))
> goto out;
>
> MikaL
>
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at http://www.tux.org/lkml/
>
>
>