There's ongoing debate that compatible addresses may be deprecated. Some 6to4 relay routers don't support them anymore. Thus it becomes necessary to allow nexthop for the native ipv6 default route to be a 6to4 address. The current implementation basically assumes the only v6-over-v4 tunneling method is automatic tunneling with compatible addresses. --- linux-2.4.3/net/ipv6/sit.c Sat Jun 23 19:40:56 2001 +++ linux-2.4.3.fix/net/ipv6/sit.c Sat Jun 23 19:54:12 2001 @@ -494,10 +494,15 @@ addr_type = ipv6_addr_type(addr6); } - if ((addr_type & IPV6_ADDR_COMPATv4) == 0) - goto tx_error_icmp; + /* check if nexthop for non-6to4 address is 6to4 address */ + dst = try_6to4(addr6); + + if (!dst) { + if ((addr_type & IPV6_ADDR_COMPATv4) == 0) + goto tx_error_icmp; - dst = addr6->s6_addr32[3]; + dst = addr6->s6_addr32[3]; + } } if (ip_route_output(&rt, dst, tiph->saddr, RT_TOS(tos), tunnel->parms.link)) {