在IP隧道转发的时候路由输出用了ip_route_output函数(/ipv4/ipip.c)其中有这么一段函数:
5 t; b8 b8 ]" G! X( r. [0 Uif (ip_route_output(&rt, dst, tiph->saddr, RT_TOS(tos), tunnel->parms.link)) {
1 S3 q( [# T: R* P) _4 w tunnel->stat.tx_carrier_errors++;0 c; y8 [9 q) {; f$ Z' \# y
goto tx_error_icmp;
% w' ?2 @: X5 ?% S) F: L. E% B }
& q1 M8 p) \6 }$ [0 u tdev = rt->u.dst.dev;3 D- D/ `3 H: P2 N. A a
3 C- M5 i% ?$ M, h' w$ N if (tdev == dev) {
( T' r3 `' }4 b ip_rt_put(rt);! l3 W& f) B) X; h/ j$ [' z
tunnel->stat.collisions++;
# ~7 g, e" e5 ~8 i% f% I5 K* v$ i goto tx_error;' X& [; U+ M# u4 z
}+ W; e7 [& m6 p+ o4 |; M0 _. J
为什么要比较tdev == dev?求教大虾0 u; O* J9 l. N1 l \
另外这是ipv4的封装,我想采用ipv6-in-ipv6(虽然看起来好像有些不可思议)那么我可以用ip6_route_output函数(/ipv6/sit.c)替代ip_route_output函数吗?它们用途相同?如果可以,其中的参数如何替换?哪位大虾给予解答,谢谢先!0 \( Y8 u$ w7 C- D5 ~3 a( ^4 {0 ]) ~
邮件:zongruirui@263.net% }1 q7 Y6 K$ S% F z9 z; K