netdev
[Top] [All Lists]

Re: 2.4.21+ - IPv6 over IPv4 tunneling b0rked

To: Mika Penttilä <mika.penttila@xxxxxxxxxxx>
Subject: Re: 2.4.21+ - IPv6 over IPv4 tunneling b0rked
From: Mika Liljeberg <mika.liljeberg@xxxxxxxxx>
Date: 11 Jul 2003 16:38:32 +0300
Cc: Pekka Savola <pekkas@xxxxxxxxxx>, Andre Tomt <andre@xxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <3F0EB227.50403@kolumbus.fi>
References: <Pine.LNX.4.44.0307111446250.27865-100000@netcore.fi> <1057925366.896.24.camel@hades> <3F0EB227.50403@kolumbus.fi>
Sender: netdev-bounce@xxxxxxxxxxx
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



<Prev in Thread] Current Thread [Next in Thread>