IP隧道模式Linux下C编程问题!

IP隧道模式Linux下C编程问题!

在IP隧道模式发送函数中(ipip_tunnel_xmit(/ipv4/ipip.c))路由查找时使用了ip_route_output函数,其中有这么一段源码:
if (ip_route_output(&rt, dst, tiph->saddr, RT_TOS(tos), tunnel->parms.link)) {
                tunnel->stat.tx_carrier_errors++;
                goto tx_error_icmp;
        }
        tdev = rt->u.dst.dev;

        if (tdev == dev) {
                ip_rt_put(rt);
                tunnel->stat.collisions++;
                goto tx_error;
        }
请问比较tdev == dev是何用意?如果我想采用ipv6_in_ipv6的模式封装发送,同样在路由查找时可以使用ip6_route_output函数替代ip_route_output函数码?如果可以,其中参数如何设置?
盼望哪位大虾可以解答,感激不尽!
zongruirui@263.net
      
因为如果不判断的话,找到的路由找到的发送设备还是这个虚拟设备怎么办,那不是成为循环了吗。