在IP隧道转发的时候路由输出用了ip_route_output函数(/ipv4/ipip.c)其中有这么一段函数:
6 J; i( f( e" n9 w2 p1 p4 yif (ip_route_output(&rt, dst, tiph->saddr, RT_TOS(tos), tunnel->parms.link)) {
6 A2 C2 j8 z @5 T1 K) W tunnel->stat.tx_carrier_errors++;
. x; B+ v& @2 a6 F6 p goto tx_error_icmp;
* t D' G5 g# r# Q: T- c }
- ]6 A; V$ z4 T tdev = rt->u.dst.dev;
" w# n, a/ O' k/ K" k q. I/ @( h
# g- `2 h: e U- {5 b( n if (tdev == dev) {
1 G( @6 ]( I! e# C3 Q+ j ip_rt_put(rt);
) z" }3 q, [/ p6 C' n tunnel->stat.collisions++;
- ^3 a7 d# K6 }. [3 m8 j: X goto tx_error;+ K0 z7 B8 y, P; q- c. X
}
3 J* ~; n6 t J8 v' L为什么要比较tdev == dev?求教大虾
, y' q F6 A7 C% A另外这是ipv4的封装,我想采用ipv6-in-ipv6(虽然看起来好像有些不可思议)那么我可以用ip6_route_output函数(/ipv6/sit.c)替代ip_route_output函数吗?它们用途相同?如果可以,其中的参数如何替换?哪位大虾给予解答,谢谢先!
- O9 U3 ^+ c9 e1 o: P) `6 O 邮件:zongruirui@263.net
: U6 K |. m' @' M. b5 m2 I2 c6 T