Re: 2.4.21+ - IPv6 over IPv4 tunneling b0rked

From: Mika Liljeberg (mika.liljeberg@welho.com)
Date: Fri Jul 11 2003 - 09:32:34 EST


On Fri, 2003-07-11 at 17:27, Mika Penttilä wrote:
> 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).

Nope, since the tunnel interface will have 2002::/16. It seems to work
with the attached patch (against 2.4.21-ac4). A small fix to sit was
required as well. Look:

hades:~# ifconfig 6to4
6to4 Link encap:IPv6-in-IPv4
          inet6 addr: ::213.243.180.94/128 Scope:Compat
          inet6 addr: 2002:d5f3:b45e::1/16 Scope:Global
          UP RUNNING NOARP MTU:1480 Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:416 (416.0 b) TX bytes:496 (496.0 b)

hades:~# ip -6 route list
::/96 via :: dev 6to4 metric 256 mtu 1480 advmss 1420
2002::/16 dev 6to4 proto kernel metric 256 mtu 1480 advmss 1420
fe80::/64 dev eth0 proto kernel metric 256 mtu 1500 advmss 1440
fe80::/64 dev 6to4 proto kernel metric 256 mtu 1480 advmss 1420
ff00::/8 dev eth0 proto kernel metric 256 mtu 1500 advmss 1440
ff00::/8 dev 6to4 proto kernel metric 256 mtu 1480 advmss 1420
default via 2002:c058:6301:: dev 6to4 metric 1024 mtu 1480 advmss 1420
hades:~# ping6 -c4 -n www.ipv6.org
PING www.ipv6.org(2001:6b0:1:ea:a00:20ff:fe8f:708f) 56 data bytes
64 bytes from 2001:6b0:1:ea:a00:20ff:fe8f:708f: icmp_seq=1 ttl=250 time=207 ms
64 bytes from 2001:6b0:1:ea:a00:20ff:fe8f:708f: icmp_seq=2 ttl=250 time=206 ms
64 bytes from 2001:6b0:1:ea:a00:20ff:fe8f:708f: icmp_seq=3 ttl=250 time=177 ms
64 bytes from 2001:6b0:1:ea:a00:20ff:fe8f:708f: icmp_seq=4 ttl=250 time=78.5 ms

--- www.ipv6.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3030ms
rtt min/avg/max/mdev = 78.547/167.637/207.698/52.821 ms

Anyone see any problems with this?

        MikaL


--- route.c.org 2003-07-11 16:41:55.000000000 +0300
+++ route.c 2003-07-11 16:42:16.000000000 +0300
@@ -743,7 +743,7 @@
                            some exceptions. --ANK
                          */
                         err = -EINVAL;
- if (!(gwa_type&IPV6_ADDR_UNICAST))
+ if (!(gwa_type&(IPV6_ADDR_UNICAST|IPV6_ADDR_ANYCAST)))
                                 goto out;
 
                         grt = rt6_lookup(gw_addr, NULL, rtmsg->rtmsg_ifindex, 1);
--- sit.c.org 2003-07-11 16:57:53.000000000 +0300
+++ sit.c 2003-07-11 17:17:42.000000000 +0300
@@ -495,10 +495,13 @@
                         addr_type = ipv6_addr_type(addr6);
                 }
 
- if ((addr_type & IPV6_ADDR_COMPATv4) == 0)
- goto tx_error_icmp;
+ if ((addr_type & IPV6_ADDR_COMPATv4))
+ dst = addr6->s6_addr32[3];
+ else
+ dst = try_6to4(addr6);
 
- dst = addr6->s6_addr32[3];
+ if (!dst)
+ goto tx_error_icmp;
         }
 
         if (ip_route_output(&rt, dst, tiph->saddr, RT_TOS(tos), tunnel->parms.link)) {

-
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/



This archive was generated by hypermail 2b29 : Tue Jul 15 2003 - 22:00:39 EST